我创建了用户控件,其中ComboBox
添加了View1
。
查看1: -
<UserControl x:Class="XYZ.Views.ComboBoxView"
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:DesignHeight="60" d:DesignWidth="600">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150" />
<ColumnDefinition Width="300" />
<ColumnDefinition Width="200" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="1" Grid.Column="0" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="5" Style="{StaticResource textControlText}" Text="{Binding Label}" />
<ComboBox Grid.Row="1" Grid.Column="1" Margin="5" SelectedItem="{Binding SelectedItem}" SelectedValue="{Binding Value}" ItemsSource="{Binding Items}" SelectedValuePath="Value" DisplayMemberPath="Ui" SelectedIndex="{Binding SelectedIndex}" Visibility="{Binding Visible}">
<ComboBox.ToolTip>
<ToolTip>
<TextBlock Text="{Binding Help}" FlowDirection="LeftToRight" TextWrapping="Wrap" MaxWidth="400"/>
</ToolTip>
</ComboBox.ToolTip>
</ComboBox>
</Grid>
</UserControl>
我与View1Model
,SelectedItem
,SelectedIndex
列表项和ObservableCollection
属性相对应Visible
。
View1Model: -
class XyZComboBoxViewModel
{
private ObservableCollection<XyZListItem> _items;
public ObservableCollection<XyZListItem> Items
{
get { return _items; }
set { _items = value; }
}
private XyZListItem _selectedItem;
public XyZListItem SelectedItem
{
get { return _selectedItem; }
set {
some code here
}
}
private Enum _visible;
public Enum Visibile
{
get{return _visible}
set{return _visible=value //passing System.Windows.Visibility.Collapsed;}
}
private int _selectedIndex;
public int SelectedIndex
{
get { return _selectedIndex; }
set { _selectedIndex = value; }
}
}
我有另一个View2
和View2Model
。
在View2Model
中,我创建两个View1model
个对象(即2个ComboBox)并将其绑定到第二个视图View2
。
<ItemsControl ItemsSource="{Binding Items}" IsTabStop="False" />
两个ComboBox(列表框用户控件)显示在View2
。
现在,我想隐藏第二个ComboBox
(可见性设置为折叠),从第一个ComboBox
中选择一个项目。
在第一个ComboBox
选择项目时,我遍历View2Model
中的View1Model对象,并将第二个ComboBox
可见属性值设置为Visibility.Collapsed
。
问题是我无法隐藏第二个ComboBox
。
请帮帮我。
答案 0 :(得分:0)
您可以使用上述代码。
private Visibility _comboboxvisibility;
public Visibility comboboxvisibility
{
get { return _comboboxvisibility; }
set { _comboboxvisibility = value; RaisePropertyChanged("comboboxvisibility"); }
}
private XyZListItem _selectedItem;
public XyZListItem SelectedItem
{
get { return _selectedItem; }
set {
comboboxvisibility = Visibility.Collapsed;
}
}
答案 1 :(得分:0)
public void UpdateAttributes(ComboBox sender)
{
var definitions = _attributeDefinitions.ToList();
{
var combobox = cmbAttributeDefinition1;
if (sender != combobox && combobox.SelectedValue != null)
definitions.RemoveAll(
x => x.AttrID == (imProfileAttributeID)combobox.SelectedValue);
}
{
var combobox = cmbAttributeDefinition2;
if (sender != combobox && combobox.SelectedValue != null)
definitions.RemoveAll(
x => x.AttrID == (imProfileAttributeID)combobox.SelectedValue);
}
{
var combobox = cmbAttributeDefinition3;
if (sender != combobox && combobox.SelectedValue != null)
definitions.RemoveAll(
x => x.AttrID == (imProfileAttributeID)combobox.SelectedValue);
}
{
var combobox = cmbAttributeDefinition4;
if (sender != combobox && combobox.SelectedValue != null)
definitions.RemoveAll(
x => x.AttrID == (imProfileAttributeID)combobox.SelectedValue);
}
{
var combobox = cmbAttributeDefinition5;
if (sender != combobox && combobox.SelectedValue != null)
definitions.RemoveAll(
x => x.AttrID == (imProfileAttributeID)combobox.SelectedValue);
}
sender.DataSource = definitions;
sender.DisplayMember = "Caption";
sender.ValueMember = "AttrID";
}
private void cmbAttributeDefinition1_DropDown(object sender, EventArgs e)
{
UpdateAttributes(sender as ComboBox);
}
private void cmbAttributeDefinition5_DropDown(object sender, EventArgs e)
{
UpdateAttributes(sender as ComboBox);
}
private void cmbAttributeDefinition2_DropDown(object sender, EventArgs e)
{
UpdateAttributes(sender as ComboBox);
}
private void cmbAttributeDefinition3_DropDown(object sender, EventArgs e)
{
UpdateAttributes(sender as ComboBox);
}
private void cmbAttributeDefinition4_DropDown(object sender, EventArgs e)
{
UpdateAttributes(sender as ComboBox);
}