0
我在我的應用程序如下觀點:WPF的組合框複選框檢查,以不同的源大於內容(MVVM)
<ComboBox x:Name="comboBox" HorizontalAlignment="Left" Margin="87,53,0,0" VerticalAlignment="Top" Width="182" ItemsSource="{Binding Clients}" DisplayMemberPath="Email" SelectedItem="{Binding SelectedClient}"/>
<ListBox x:Name="listBox" HorizontalAlignment="Left" Height="100" Margin="87,98,0,0" VerticalAlignment="Top" Width="182" ItemsSource="{Binding Countries}">
<ListBox.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding Name}" Checked=""/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
兩個的ItemSource綁定綁定到以下類型的兩個列表:
國家類:
public class Country
{
public Guid Guid { get; set; } = Guid.NewGuid();
public string Name { get; set; }
public Country(string name)
{
Name = name;
}
}
客戶也是我的ViewModel另一個列表
public class Client
{
public Guid Guid { get; set; } = Guid.NewGuid();
public string Prename { get; set; }
public string Lastname { get; set; }
public string Email { get; set; }
public List<Country> Countries { get; set; } = new List<Country>();
public List<AreaType> Areas { get; set; } = new List<AreaType>();
public Client() { }
public Client(string prename, string lastname, string email, List<Country> countires = null, List<AreaType> areas = null)
{
Prename = prename;
Lastname = lastname;
Email = email;
Countries = countries;
Areas = areas;
}
}
我的問題:我試圖找到一種方法來檢查視圖中的複選框,如果客戶端在複選框顯示的列表中具有相同的國家/地區。
實施例:View
顯示從ViewModel.Countries
「瑞士」,「德國」和「奧地利」和ViewModel.SelectedClient.Countries
contrains「瑞士」和「奧地利」國家然後只有這兩個應該在view
檢查。
也許你可以添加布爾到國家「選定」。在創建客戶時,請將您國家/地區列表中可用的國家/地區設置爲selected = true。然後在xaml中,您可以將Selected字段綁定到您的複選框。 –
@JeroenDop這將工作我猜雖然我不認爲它是一個非常好的想法,添加一個屬性的模型只是爲了能夠檢查一些複選框,因爲這不是國家類的唯一用法。 Imo可能用與國家本身無關的數據「損壞」模型 – VIP
確實,您可以添加具有添加屬性的ViewModel ClientCountry。將ClientCountry添加到客戶端的國家/地區列表中。 –