2014-12-09 66 views
0

這是我的按鈕:更改按鈕含量計算

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

和我在視圖模型已經列表:

List<String> Items; 
  • 如果Items.Count爲0或1,該按鈕的內容應該是「開始」
  • 如果Items.Count大於1,則該按鈕的內容應爲「停止」

我該怎麼做?

+0

如果什麼'Items'爲空? – ekad 2014-12-09 12:32:57

+0

然後應該禁用按鈕內容開始 – Struct 2014-12-09 12:38:11

回答

2

將按鈕的內容綁定到您的視圖模型上的另一個可以計算來自列表數量的消息的模型。 視圖模型部分

public string ButtonContent {get{return (Items.Count<=1) ? "Start" : "Stop";}} 

和WPF結合

<Button Content={Binding ButtonContent, Mode=TwoWay } /> 
+1

可能需要添加內容的綁定語法。只是一個建議。 – kanchirk 2014-12-09 12:35:27

+2

當採用這種方法修改集合時,Button的內容不會改變。 – Yurec 2014-12-09 12:49:40

+0

在Items屬性中帶有NotifyPropertyChanged的解決方案效果很好 – Struct 2014-12-09 14:26:52

0

可能是嘗試綁定方法的內容,這將返回你需要的價值,這樣的事情:

public string GetStartButtonContent() 
{ 
    return Items.Count() > 1 ? "Stop" : "Start"; 
} 

我不不知道如何將該方法與內容綁定...

0

您應該添加如果有多個按鈕和引用ID,則前綴爲#的情況下,ID爲按鈕。你需要包含jquery才能工作。 僞代碼是這樣:

$('body').on('click','Button',function(){ 
if(condition to check count>0) 
    $('Button').attr('content','Start'); 
else 
$('Button').attr('content','Stop'); 

}) 
+2

問題是關於WPF而不是Java Script。 – Yurec 2014-12-09 12:50:50

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>