4

アプリバー ボタンの可視性プロパティのバインドに問題があります。アプリバー ボタンの可視性を別の要素の可視性にバインドしたいと考えています。別の要素が表示されている場合、アプリバーが表示されます。

だからここに私のコードがあります:

<common:LayoutAwarePage.BottomAppBar>
    <AppBar>
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
            <Button Visibility="{Binding ElementName=btnSave, Path=Visibility}"
                    Click="Edit_Click" />
             ...(more buttons)
        </StackPanel>
    </AppBar>
</common:LayoutAwarePage.BottomAppBar>

<Button Grid.Row="7" Grid.Column="0"
     x:Name="btnSave"
     Content="Save"
     Style="{StaticResource EditModeButtonStyle}"
     Click="Save_Click" />

コード ビハインドで btnSave の可視性を変更していますが、アプリバー ボタンの可視性に反応はありません。テキストブロックだけで同じバインドを試みたところ、うまくいきました。また、アプリバーでコンバーターを使用しようとしましたが (必要ないと思っていても)、デバッガーがコンバーターのメソッドを読み取っていないことがわかりました。同様のアプリバーの問題を書いている人が何人かいるのを見ましたが、答えはどれも私を助けていません。誰かが私にそれを行う方法を知っていますか? (コードビハインドを使用してアプリバーの可視性を変更したくありません)。

4

1 に答える 1

4

appbar 要素がページの要素を認識していないため、要素バインディングが機能していないと思われます。インターフェイスを実装する独立したプロパティを使用することをお勧めしINotifyPropertyChangedます。そのプロパティを、可視性を設定する要素にバインドします。

C#

public sealed partial class BlankPage4 : Page, INotifyPropertyChanged
{
    private Visibility _IsHide;
    public Visibility IsHide
    {
        get { return _IsHide; }
        set
        {
            _IsHide = value;
            OnPropertyChanged("IsHide");
        }
    }

    public BlankPage4()
    {
        this.InitializeComponent();
        DataContext = this;
    }

    private void btnHideAll_Click(object sender, RoutedEventArgs e)
    {
        IsHide = Visibility.Collapsed;
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(string property)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(property));
        }
    }
}

XAML

<Page.BottomAppBar>
    <AppBar IsSticky="True" IsOpen="True">
        <StackPanel Orientation="Horizontal">
            <Button x:Name="btnHello" Visibility="{Binding IsHide}" Content="Hello" />
            <TextBlock Visibility="{Binding IsHide}" Text="Hello" FontSize="20"/>
        </StackPanel>
    </AppBar>
</Page.BottomAppBar>

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <StackPanel>
        <Button x:Name="btnSave" Visibility="{Binding IsHide}" Content="Save" />
        <Button Content="Hide All" Click="btnHideAll_Click" />
    </StackPanel>
</Grid>
于 2013-09-25T16:56:55.213 に答える