那是我的按钮:
<Button Content="Start" x:Name="StartButton" Click="StartButtonClick" IsEnabled="{Binding Items.Count}" Width="120"/>
我的ViewModel中有一个List:
List<String> Items;
我该怎么做?
答案 0 :(得分:2)
将按钮的内容绑定到视图模型上的另一个属性,该属性将计算列表计数中的消息。 ViewModel部分
public string ButtonContent {get{return (Items.Count<=1) ? "Start" : "Stop";}}
和WPF绑定
<Button Content={Binding ButtonContent, Mode=TwoWay } />
答案 1 :(得分:2)
首先,您需要对项目使用ObservableCollection<string>
,因为它会在项目计数发生变化时通知。
之后,以下XAML将根据项目计数更改按钮内容:
<Button>
<Button.Style>
<Style TargetType="Button">
<Setter Property="Content" Value="Stop"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Items.Count}" Value="0">
<Setter Property="Content" Value="Start"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=Items.Count}" Value="1">
<Setter Property="Content" Value="Start"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
答案 2 :(得分:0)
可以尝试将方法绑定到内容,这将返回您需要的值,如下所示:
public string GetStartButtonContent()
{
return Items.Count() > 1 ? "Stop" : "Start";
}
我不知道WPF,也不知道如何将方法绑定到内容......
答案 3 :(得分:0)
如果有多个按钮和参考ID以#预设,则应该向按钮添加id。您需要包含jquery才能工作。 伪代码如下:
$('body').on('click','Button',function(){
if(condition to check count>0)
$('Button').attr('content','Start');
else
$('Button').attr('content','Stop');
})