मैं एक WPF उपयोगकर्ता नियंत्रण है, जो एक ListBox
शामिल है कि CheckBox
es.
<UserControl x:Class="AC.CodA.WPF.UserControls.CheckedListBox"
x:Name="Root"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:Background="White">
<StackPanel>
<ListBox BorderThickness="0"
ItemsSource="{Binding ElementName=Root, Path=ItemsSource}">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Focusable"
Value="False" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<ContentPresenter />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding IsChecked}"
Content="{Binding Item}">
</CheckBox>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Separator />
<CheckBox x:Name="DeSelectAll"
Content="Select / deselect all"
Checked="DeSelectAll_Checked"
Unchecked="DeSelectAll_Unchecked" />
</StackPanel>
</UserControl>
मैं का उपयोग कर रहा हूँ इस पर नियंत्रण पर एक और जगह:
<GroupBox Header="{Binding ElementName=Root, Path=Header, FallbackValue=Header}">
<user:CheckedListBox ItemsSource="{Binding ElementName=Root, Path=Companies}" />
</GroupBox>
इस जगह पर, के Companies
संपत्ति एक ObservableCollection<CheckedListBoxItem<Company>>
.
CheckedListBoxItem
के साथ एक वर्ग है bool IsChecked
संपत्ति और सामान्य T Item
संपत्ति.
अब, T Item
कुछ भी हो सकता है. इस बिंदु पर मैं इस संपत्ति के रूप में सेट Content
के CheckBox
लेकिन सबसे अधिक बार इस परिणाम में कुछ अस्पष्ट की तरह AC.CodA.Scripting.Shared.Company
.
वहाँ एक तरीका है करने के लिए सेट CheckBox
Content
बाहर के उपयोगकर्ता नियंत्रण? इस तरह से कुछ के साथ CheckBoxContent
:
<GroupBox Header="{Binding ElementName=Root, Path=Header, FallbackValue=Header}">
<user:CheckedListBox ItemsSource="{Binding ElementName=Root, Path=Companies}" CheckBoxContent="{Binding Item.Name}" />
</GroupBox>
और मेरा उद्देश्य इस:
<CheckBox IsChecked="{Binding IsChecked}"
Content="{Binding CheckBoxContent}">
</CheckBox>
CheckBoxContent
का उपयोग करते समयCheckedListBox
? एक वर्ग ले लोCompany
उदाहरण के लिए एक संपत्ति के साथName
. मैंने कोशिश की है के बाद लेकिन सामग्री खाली है:<user:CheckedListBox ItemsSource="{Binding ElementName=Root, Path=Companies}" CheckBoxContent="{Binding Name}" />
.