当我在组合框中选择值时,我必须隐藏另一个控件。我已经编写了如下所示的代码。请纠正我错误的地方。
查看代码:
<ComboBox x:Name="cboShowRuleWhere" Height="20" Width="200" ItemsSource="{Binding Source={StaticResource listedView}, Path=FilterRules}" DisplayMemberPath="RuleName" SelectedValuePath="RuleId" SelectedValue="{Binding Source={StaticResource listedView}, Path=SelectedRuleName, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" ></ComboBox>
<ComboBox Height="21" HorizontalAlignment="Left" Margin="6,4,0,0" x:Name="cboRuleCondtion" Visibility="{Binding Path=IsButtonVisible,Converter={StaticResource BoolToVisible}}" VerticalAlignment="Top" Width="212" />
ViewModel代码:
private DataTable m_selectedRuleName;
public DataTable SelectedRuleName
{
get
{
return m_selectedRuleName;
}
set
{
m_selectedRuleName = value;
base.RaisePropertyChangedEvent("SelectedRuleName");
}
}
private bool _IsButtonVisible;
public bool IsButtonVisible
{
get { return _IsButtonVisible; }
set
{
_IsButtonVisible = value;
base.RaisePropertyChangedEvent("IsButtonVisible");
}
}
我必须纠正?请尽快帮助我。提前谢谢..
答案 0 :(得分:1)
这里没有太多可以继续下去。例如,您根据规则标准在哪里设置IsButtonvisible?以下是一些想法:
1)不要为IsButtonVisible创建支持字段。相反,让它返回正确的分析。
public bool IsButtonVisible { get { return SelectedRuleName == "IsVisibleRule"; } }
2)您可以从任何地方触发Notify Propery Changed事件。在这种情况下,您希望每次SelectedRuleName更改时都重新评估IsButtonVisible绑定:
private DataTable m_selectedRuleName;
public DataTable SelectedRuleName
{
get
{
return m_selectedRuleName;
}
set
{
m_selectedRuleName = value;
base.RaisePropertyChangedEvent("SelectedRuleName");
base.RaisePropertyChangedEvent("IsButtonVisible");
}
}
3)SelectedRuleName真的是DataTable吗?这对我来说似乎很奇怪,因为它表示多行。这将是一个更长的帖子,但我会完全避免使用DataTable并将ComboBox项目源更改为ObservableCollection。 “SelectedRuleName”的类型为T(不是DataTable)。
4)同样,我使用SelectedItem而不是SelectedValue取得了更大的成功。
我希望其中一些有帮助。