0

、などの名前DrawMoneyFromChannel1の8 つのボタンがあります。DrawMoneyFromChannel2DrawMoneyFromChannel3

List<DeviceChannels>各チャネルに金額を含む があります。

それぞれのチャンネルの金額がゼロの場合、そのチャンネルのボタンを有効にしないでください。

この状況でバインディングを編成する最良の方法は何ですか?

4

1 に答える 1

4

XAMLでボタンをハードコーディングしないでください:

<!-- BAD -->
<StackPanel>
  <Button x:Name="DrawMoneyFromChannel1" Click="??"
      Content="Draw money from channel 1" IsEnabled="??"/>
  <Button x:Name="DrawMoneyFromChannel2" Click="??"
      Content="Draw money from channel 2" IsEnabled="??"/>
  <Button x:Name="DrawMoneyFromChannel3" Click="??"
      Content="Draw money from channel 3" IsEnabled="??"/>
  <Button x:Name="DrawMoneyFromChannel4" Click="??"
      Content="Draw money from channel 4" IsEnabled="??"/>
  <!-- ... -->
</StackPanel>

<!-- BETTER -->
<ItemsControl ItemsSource="{Binding Channels}">
  <ItemsControl.ItemTemplate>
    <Button Command="{Binding Draw}">
      <TextBlock>
        <TextBlock Text="Draw money from "/>
        <TextBlock Text="{Binding Name}"/>
      </TextBlock>
    </Button>
  </ItemsControl.ItemTemplate>
</ItemsControl>

この例では、はオブジェクトChannelsのコレクションです。ChannelViewModelこのChannelViewModelクラスは、プロパティ、プロパティ、およびプロパティを実装INotifyPropertyChangedして持っています。が実装されているため、がゼロの場合はfalseになります。AmountNameDrawICommandICommandCanExecuteAmount

于 2012-12-04T09:29:11.953 に答える