2016-12-13 18 views
0

アイテムのリストボックスでは、1つのアイテムをプライマリアイテムとして指定できます。テンプレートでは、アイテムが現在プライマリアイテムでない場合にのみ表示されるパラメータ化されたコマンドにバインドされたボタンがあります(コレクション内の特定のアイテムはdatacontextのコマンドに渡されるパラメータです)。アイテムがプライマリアイテムである場合は、静的イメージを表示する必要があります。私はボタンをバインドしているので、画像のVisibilityプロパティをボタンのVisibilityプロパティの "inverse"にバインドできるとわかりました。 (つまり、ボタンが表示されているときは、画像は非表示になりますが、その逆もあります)。しかし、これを行う方法を理解することはできません。ボタンはテンプレート内のグリッド内の画像の兄弟です。ここに私のテンプレートは...兄弟コントロールのプロパティにバインドする方法は?

<DataTemplate> 
    <StackPanel Orientation="Vertical"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
     ... 
     </Grid.ColumnDefinitions> 

     <TextBlock Grid.Column="0" Text="{Binding Path=FormattedNumber}" Style="{StaticResource FieldDataTextBlock}" FontWeight="Bold" /> 
     <!-- How can I make this image aware of the following button's state? --> 
     <Image Grid.Column="2" Source="/Resources/Star.Pressed.png" Visibility="{Binding RelativeSource={RelativeSource AncestorType=Grid}, Path={}}" Width="20" Height="20" /> 
     <Button Grid.Column="2" x:Name="btnMakePrimary" Style="{StaticResource StarButton}" Command="{Binding ElementName=lstPhoneNumbers, Path=DataContext.MakePrimaryPhoneNumberCommand}" CommandParameter="{Binding}" ToolTip="Set as display number." Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Converter={StaticResource BoolVisibility}}" /> 
     <Button Grid.Column="4" Style="{StaticResource DetailsButton}" Command="{Binding ElementName=lstPhoneNumbers, Path=DataContext.ViewPhoneNumberCommand}" CommandParameter="{Binding}" /> 
     <Button Grid.Column="6" Style="{StaticResource DeleteButton}" Command="{Binding ElementName=lstPhoneNumbers, Path=DataContext.DeletePhoneNumberCommand}" CommandParameter="{Binding}" /> 
    </Grid> 
    <Grid > 
     <Grid.ColumnDefinitions> 
     ... 
     </Grid.ColumnDefinitions> 

     <TextBlock Grid.Column="0" Text="{Binding Path=PhoneTypeString}" Style="{StaticResource FieldDataTextBlock}" /> 
     <TextBlock Grid.Column="2" Text="(notes)" Foreground="Blue" ToolTip="{Binding Path=PhoneNumberNote}" Visibility="{Binding Path=HasNote, Converter={StaticResource BoolVisibility}}" /> 
    </Grid> 
    </StackPanel> 
</DataTemplate> 

どちらかというのですか、パラメータを取り、親のDataContextのメソッドに画像をバインドする方法はありますか?

ありがとうございました。 J

答えて

0

は気にしないで

は...私はそれが結合して、私のビジュアルをいじった含まれる画像リソースの問題を修正するのElementName属性を経由して実現することができました:

<Button Grid.Column="2" Name="btnMakePrimary" Style="{StaticResource StarButton}" Command="{Binding ElementName=lstPhoneNumbers, Path=DataContext.MakePrimaryPhoneNumberCommand}" CommandParameter="{Binding}" ToolTip="Set as display number." Visibility="{Binding Path=IsEnabled, RelativeSource={RelativeSource Self}, Converter={StaticResource BoolVisibility}}" /> 
<Image Grid.Column="2" Source="/Resources/Star.Pressed.png" Visibility="{Binding ElementName=btnMakePrimary, Path=IsEnabled, Converter={StaticResource BoolVisibilityReverse}}" Width="20" Height="20" /> 
関連する問題