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来设置。名称
如何通过XAML或Code绑定此属性。
谢谢
你是对的,由于某种原因以下不工作,虽然相同的绑定工作得很好,你使用它例如TextBox
的Text
属性:
<Button Style="{StaticResource SkipBackAppBarButtonStyle}" AutomationProperties.Name="{Binding SelectedItem, ElementName=List}" />
我确实设法通过在视图模型中使用属性并将其绑定到ListView.SelectedItem
和AutomationProperties.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));
}
}