Jon*_*han 2 c# wpf xaml user-controls listview
我ListView在UserControl中有一个Contained我想在UserControl中没有选择任何项目时禁用一个按钮,这是正确的方法吗?到目前为止,它没有禁用,它只是一直保持启用状态.我已经包含了xaml代码.
searchAccountUserControl是xaml中的UserControl名称属性.AccountListView是ListViewuserControl xaml中的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>
Run Code Online (Sandbox Code Playgroud)
谢谢.
最后我用过:
在我的ViewModel中:
private bool _isSelected;
public bool IsSelected { get { return _isSelected; }
set { _isSelected = _account.View.CurrentItem != null;
PropertyChanged.SetPropertyAndRaiseEvent(this, ref _isSelected, value,
ReflectionUtility.GetPropertyName(() => IsSelected)); } }
Run Code Online (Sandbox Code Playgroud)
然后在xaml中使用isEnabled ="{Binding Path = IsSelected}".
H.B*_*.B. 21
这里有一些问题.
优先级,如果您设置IsEnabled控件本身,样式将永远无法更改它.
ElementName,它是一个ElementName,而不是一个路径,只是一个字符串,它给出了一个元素的名称.除此之外的一切都进入了道路.
样式语法,如果你设置了一个Style.TargetType你不应该Setter.Property用类型前缀设置(虽然留下它不会打破setter).
顺便说一下,这就足够了:
<Button IsEnabled="{Binding SelectedItems.Count, ElementName=lv}" ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10045 次 |
| 最近记录: |