.net 将复选框选定值文本框绑定到与“绑定到属性”下拉列表不同的属性
我的组合框绑定到3个属性(IsVisited、Address和City):.net 将复选框选定值文本框绑定到与“绑定到属性”下拉列表不同的属性,.net,wpf,xaml,binding,combobox,.net,Wpf,Xaml,Binding,Combobox,我的组合框绑定到3个属性(IsVisited、Address和City): 我想创建一个wpf组合框,下拉框包含两列 isvisted(复选框) 城市(字符串) 组合框的选定文本框部分应仅显示“地址”。有人知道如何做到这一点吗?一个有点老套的解决方案是检查您的DataTemplate是否在ComboBoxItem中,并在不在时隐藏不需要的值: <ComboBox.ItemTemplate> <DataTemplate
我想创建一个wpf组合框,下拉框包含两列
组合框的选定文本框部分应仅显示“地址”。有人知道如何做到这一点吗?一个有点老套的解决方案是检查您的
DataTemplate
是否在ComboBoxItem
中,并在不在时隐藏不需要的值:
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding IsVisited}" Width="150" x:Name="chk"/>
<TextBlock Text="{Binding Address}" Width="100"/>
<TextBlock Text="{Binding City}" Width="100" x:Name="City"/>
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ComboBoxItem}}}" Value="{x:Null}">
<Setter TargetName="City" Property="Visibility" Value="Collapsed"/>
<Setter TargetName="chk" Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ComboBox.ItemTemplate>
我重现了你的问题,完成了你的任务 这是最初的观点 然后在选择了Kegalla之后 我想这就是你需要的
mycomboxItem
的类,并包含属性,即hasvistered、Address、City、TextBoxValue
)属性
来绑定组合框项源
(我定义了一个名为ComboBoxItems
)的属性)和另一个属性来绑定组合框的SelectedComboxItem
)XAML
<Window x:Class="ComboboxSelectedItemChange.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:vm="clr-namespace:ComboboxSelectedItemChange.ViewModels"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.DataContext>
<vm:MainViewModel />
</Grid.DataContext>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="40" />
<RowDefinition Height="30" />
</Grid.RowDefinitions>
<Label Grid.Column="0" Grid.Row="0" Content="Combo box test" />
<ComboBox Grid.Column="1" Grid.Row="1"
ItemsSource="{Binding ComboBoxItems}"
SelectedItem="{Binding SelectedComboBoxItem}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding HasVisited}" Width="30" />
<TextBlock Text="{Binding TextBoxValue}" Width="100" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding ChangeSelectionCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
</Grid>
这是MyComboxItemViewModel的
公共类MyComboxItemViewModel:ViewModelBase
{
#区域声明
二等兵布尔已经到访;
私有字符串地址;
私人城市;
私有字符串textBoxValue;
#端区
#区域属性
///
///获取或设置一个值,该值指示此实例是否已访问。
///
///
///如果此实例已访问,则为true;否则为false。
///
公共图书馆
{
得到
{
回访;
}
设置
{
hasVisited=价值;
NotifyPropertyChanged(“HasVisited”);
}
}
///
///获取或设置地址。
///
///地址。
公共字符串地址
{
得到
{
回信地址;
}
设置
{
地址=值;
NotifyPropertyChanged(“地址”);
}
}
///
///获取或设置城市。
///
///城市。
公共字符串城市
{
得到
{
回归城市;
}
设置
{
城市=价值;
通知财产变更(“城市”);
}
}
///
///获取或设置文本框值。
///
///文本框的值。
公共字符串TextBoxValue
{
得到
{
返回textBoxValue;
}
设置
{
textBoxValue=值;
NotifyPropertyChanged(“TextBoxValue”);
}
}
#端区
}
<Window x:Class="ComboboxSelectedItemChange.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:vm="clr-namespace:ComboboxSelectedItemChange.ViewModels"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.DataContext>
<vm:MainViewModel />
</Grid.DataContext>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="40" />
<RowDefinition Height="30" />
</Grid.RowDefinitions>
<Label Grid.Column="0" Grid.Row="0" Content="Combo box test" />
<ComboBox Grid.Column="1" Grid.Row="1"
ItemsSource="{Binding ComboBoxItems}"
SelectedItem="{Binding SelectedComboBoxItem}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding HasVisited}" Width="30" />
<TextBlock Text="{Binding TextBoxValue}" Width="100" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding ChangeSelectionCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
</Grid>