【发布时间】:2011-11-17 18:03:47
【问题描述】:
我有一个 ListView 包含在用户控件中我想在用户控件中未选择任何项目时禁用按钮,这是正确的方法吗?到目前为止,它并没有禁用,它只是一直保持启用。
我已经包含了 xaml 代码。
searchAccountUserControl 是 xaml 中的 UserControl 名称属性。
而 AccountListView 是 userControl xaml 中的ListView name 属性。
<Button Content="Debit" IsEnabled="true" HorizontalAlignment="Left" Margin="18,175,0,0" Name="DebitButton" Width="128" Grid.Column="1" Height="32" VerticalAlignment="Top" Click="DebitButton_Click">
<Button.Style>
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=searchAccountUserControl.AccountListView, Path=SelectedValue}" Value="{x:Null}" >
<Setter Property="Button.IsEnabled" Value="false"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
谢谢。
终于用上了:
在我的视图模型中:
private bool _isSelected;
public bool IsSelected { get { return _isSelected; }
set { _isSelected = _account.View.CurrentItem != null;
PropertyChanged.SetPropertyAndRaiseEvent(this, ref _isSelected, value,
ReflectionUtility.GetPropertyName(() => IsSelected)); } }
然后在 xaml 中使用 isEnabled = "{Binding Path=IsSelected}"。
【问题讨论】:
-
MVVM 不只是使用绑定。它将 View 从 ViewModel 中分离出来。您是解决方案,认为它可能有效,将视图与 ViewModel 耦合。但是,嘿,如果它有效,它有效吗?
标签: c# wpf xaml listview user-controls