View Full Version : اشکال در combobox
multiman
چهارشنبه 13 بهمن 1389, 18:21 عصر
یه برنامه نوشتم که باید به تعداد رکوردام در combobox آیتم درست کنه. مثلا اگر 10 تا رکورد دارم 10 آیتم از 1 تا 10 در combobox درست کنه. ولی هر کاری می کنم به جواب درستی نمی رسم.
من از کد زیر استفاده کردم. ولی جواب نمیده.
comboboxitem cmbitem=new comboboxitem
cmb.items.add(cmbitem.content="1"))
مهدی فرزاد
چهارشنبه 13 بهمن 1389, 19:32 عصر
سلام
شما باید از DataTemplate استفاده کنید
<ComboBox Height="23" HorizontalAlignment="Left" Margin="173,105,0,0" x:Name="comboBox1" VerticalAlignment="Top" Width="120" IsEditable="True" ItemsSource="{Binding AllPersonal}" ItemTemplate="{DynamicResource DataTemplate}" >
<ComboBox.Resources>
<DataTemplate x:Key="DataTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock TextWrapping="Wrap" Text="{Binding FName, Mode=OneWay}" Margin="0,0,10,0"/>
<TextBlock TextWrapping="Wrap" Text="{Binding LName, Mode=OneWay}"/>
</StackPanel>
</DataTemplate>
</ComboBox.Resources>
</ComboBox>
شما بعد از ساخت DataTemplate آیتم سورس کومبو رو بایند میکنید به ابجکت مورد نظر و میتونید هر کدوم از آیتمها ی کمبور رو هم به فیلد مورد نظر بایند کنید مثل بالا
حتی اگه آیتمها قرار نباشه چیزی نمایش بدن اگه بایند نکنید به تعداد رکورد هاتون آیتم اضافه خواهد شد (ولی باید آیتم سورس بایند باشد)
مثالی رو که توی این لینک گذاشتم ببینید
http://barnamenevis.org/showthread.php?272284-Binding-کامبوباکس
multiman
سه شنبه 19 بهمن 1389, 23:02 عصر
مشکل من جایی هست که باید برم یک فیلد از دیتاست رو چک کنم، مثلا اگر فیلد مورد نظر مقدارش 2 باشد باید به کمبوباکس من 2 آیتم اضافه بشه که حاوی اعداد 1 و 2 باشه.
نمیدونم چطور بر اساس مقدار فیلدی از دیتاست به کمبوباکس آیتم اضافه کنم.
مهدی فرزاد
چهارشنبه 20 بهمن 1389, 08:20 صبح
بسیار ساده است در این حالت پس نیاز نداره بایند کنید فقط یک دیتا تمپلت درست کنید مثلا من در کد زیر یک Button رو به عنوان آیتم کمبو در دیتا تمپلت تعریف کردم
<ComboBox x:Name="cbo" Height="57" ItemTemplate="{DynamicResource DataTemplate1}">
<ComboBox.Resources>
<DataTemplate x:Key="DataTemplate1">
<Grid>
<Button Content="Button"/>
</Grid>
</DataTemplate>
</ComboBox.Resources>
</ComboBox>
حالا به وسیله کد زیر هر چند تا از اون خواستم اضافه میکنم
for (int i = 0; i < 5; i++)
{
cbo.Items.Add(null);
}
multiman
چهارشنبه 20 بهمن 1389, 12:53 عصر
حالا به وسیله کد زیر هر چند تا از اون خواستم اضافه میکنم
for (int i = 0; i < 5; i++)
{
cbo.Items.Add(null);
}
[/QUOTE]
من قبلا همين كار كردم درون همين حلقه for شما كه از 1 تا 5 هست مي خوام هر دفعه مقدار i رو درون آيتم بذارم، ولي نميشه. مگر اينكه به ازاي هر i يك combox item درست كنم كه به جواب ميرسم ولي چيز جالبي نيست. ميخواستم ببينم ميشه كار ديگه اي كرد؟
مهدی فرزاد
چهارشنبه 20 بهمن 1389, 15:13 عصر
خوب اگه میخواید مقدار i رو در آیتم ها بریزید بایدبجای دیتا تمپلت یک ComboBoxItemStyle بسازید و با کد
ItemContainerStyle="{DynamicResource ComboBoxItemStyle1}"
اونو به کمبو معرفی کنید
مثلا
<ComboBox x:Name="cbo" Width="100" ItemContainerStyle="{DynamicResource ComboBoxItemStyle1}">
<ComboBox.Resources>
<Style x:Key="ComboBoxItemStyle1" TargetType="{x:Type ComboBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ComboBoxItem}">
<Button Margin="2" >
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Button>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ComboBox.Resources>
</ComboBox>
حالا میتونید حلقه for رو به شکل زیر بنویسید
for (int i = 1; 5; i++)
{
cbo.Items.Add(i);
}
فایل ضمیمه من رو ببینید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.