Windows商店应用程序应用程序栏按钮文本绑定

本文关键字:应用程序 文本 绑定 按钮 Windows | 更新日期: 2023-09-27 17:50:56

我有一个应用程序栏,里面有一些像这样的按钮

<Page.BottomAppBar>
    <AppBar x:Name="bottomAppBar" Padding="10,10,10,10"  >
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
            <Button Style="{StaticResource ReadAppBarButtonStyle}"  >
            </Button>
        </StackPanel>
    </AppBar>
</Page.BottomAppBar>

我想将按钮文本绑定到ListView的选定项属性,并使用IValueConverter

我发现按钮文本要使用AutomationProperties来设置。名称

如何通过XAMLCode绑定此属性。

谢谢

Windows商店应用程序应用程序栏按钮文本绑定

你是对的,由于某种原因以下不工作,虽然相同的绑定工作得很好,你使用它例如TextBoxText属性:

<Button Style="{StaticResource SkipBackAppBarButtonStyle}" AutomationProperties.Name="{Binding SelectedItem, ElementName=List}" />

我确实设法通过在视图模型中使用属性并将其绑定到ListView.SelectedItemAutomationProperties.Name来获得它的工作:

<ListView ItemsSource="{Binding Strings}" 
          SelectedItem="{Binding SelectedString, Mode=TwoWay}" />
<!-- ... -->
<Button Style="{StaticResource SkipBackAppBarButtonStyle}" 
        AutomationProperties.Name="{Binding SelectedString}" />

SelectedString应该是实现INotifyPropertyChanged的视图模型中的属性:

public class ViewModel : INotifyPropertyChanged
{
    public ViewModel()
    {
        Strings = new ObservableCollection<string>();
        for (int i = 0; i < 50; i++)
        {
            Strings.Add("Value " + i);
        }
    }
    public ObservableCollection<string> Strings { get; set; }
    private string _selectedString;
    public string SelectedString
    {
        get { return _selectedString; }
        set
        {
            if (value == _selectedString) return;
            _selectedString = value;
            OnPropertyChanged();
        }
    }
    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    }
}