根据列表计数更改按钮内容

时间:2014-12-09 12:27:49

标签: c# .net wpf

那是我的按钮:

<Button Content="Start" x:Name="StartButton" Click="StartButtonClick" IsEnabled="{Binding Items.Count}" Width="120"/>

我的ViewModel中有一个List:

List<String> Items;
  • 如果Items.Count为0或1,则按钮的内容应为&#34;开始&#34;
  • 如果Items.Count为&gt; 1按钮的内容应为&#34;停止&#34;

我该怎么做?

4 个答案:

答案 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');

})