Ang*_*ker 35 wpf combobox checkedlistbox
我的谷歌技能让我失望.任何人都听说过像WPF这样的控件.我试图让它看起来像这样(winforms截图).
Mar*_*ris 56
您可以通过设置组合框的DataTemplate来自己完成此操作.本文将向您展示如何 - 对于列表框,但原理是相同的.
这里的另一篇文章可能更适合您要做的事情,简单地将项目模板的第一列设置为复选框并将其绑定到业务对象上的bool.
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsSelected}"
Width="20" />
<TextBlock Text="{Binding DayOfWeek}"
Width="100" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
Ser*_*gey 19
有我的组合框.我使用Martin Harris代码和来自此链接的代码当WPF ComboBox的选择为空时,它是否可以显示替代文本?
<ComboBox Name="cbObjects" Grid.Column="1" Grid.Row="1" VerticalAlignment="Center" Margin="2,2,6,0" SelectionChanged="OnCbObjectsSelectionChanged" >
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsSelected}" Width="20" VerticalAlignment="Center" Checked="OnCbObjectCheckBoxChecked" Unchecked="OnCbObjectCheckBoxChecked" />
<TextBlock Text="{Binding ObjectData}" VerticalAlignment="Center" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<TextBlock IsHitTestVisible="False" Name="tbObjects" Text="???????? ???????..." Grid.Column="1" Grid.Row="1" VerticalAlignment="Center" Margin="6,2,6,0" />
Run Code Online (Sandbox Code Playgroud)
数据源的小类:
public class SelectableObject <T> {
public bool IsSelected { get; set; }
public T ObjectData { get; set; }
public SelectableObject(T objectData) {
ObjectData = objectData;
}
public SelectableObject(T objectData, bool isSelected) {
IsSelected = isSelected;
ObjectData = objectData;
}
}
Run Code Online (Sandbox Code Playgroud)
并且有两个处理程序 - 一个用于处理CheckBox单击,另一个用于形成ComboBox的Text.
private void OnCbObjectCheckBoxChecked(object sender, RoutedEventArgs e) {
StringBuilder sb = new StringBuilder();
foreach (SelectableObject<tblObject> cbObject in cbObjects.Items)
if (cbObject.IsSelected)
sb.AppendFormat("{0}, ", cbObject.ObjectData.Description);
tbObjects.Text = sb.ToString().Trim().TrimEnd(',');
}
private void OnCbObjectsSelectionChanged(object sender, SelectionChangedEventArgs e) {
ComboBox comboBox = (ComboBox)sender;
comboBox.SelectedItem = null;
}
Run Code Online (Sandbox Code Playgroud)
对于我使用的ComboBox.ItemsSource
ObservableCollection<SelectableObject<tblObject>>
Run Code Online (Sandbox Code Playgroud)
其中tblObject是我的对象的类型,我想在ComboBox中显示的列表.
我希望这段代码对某人有用!
给一个尝试CheckComboBox从扩展WPF工具包.我的主要优点是有两个绑定列表:
我发现这种方法更实用.此外,您可以指定要绑定的集合的成员value
和display
成员.
如果你不想带一堆其他控件CheckComboBox
,你可以得到它的源代码,它非常简单(需要带上Selector类).
小智 7
带有复选框的组合框
<ComboBox Height="16" Width="15">
<CheckBox Content="First Checkbox" />
<CheckBox Content="Second Checkbox" />
<CheckBox Content="Third Checkbox" />
<TextBlock Text="Some Text" />
</ComboBox>
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,提供的答案对我不起作用,我尝试了许多变体,并不断收到有关复选框不属于组合框的错误消息,并且数据上下文似乎已损坏。
最后,我不需要做任何涉及数据模板或任何背后代码的事情,并且我的绑定工作正常(示例中未显示)
我必须说,在阅读所有答案后,我很高兴这件事变得如此简单。
归档时间: |
|
查看次数: |
59952 次 |
最近记录: |