gpt4 book ai didi

c# - 带有用于搜索的文本框的 DataTemplate

转载 作者:行者123 更新时间:2023-12-03 10:31:35 28 4
gpt4 key购买 nike

我使用 MasterDetailsView控制。它有 MasterHeaderTemplate属性(property)。我想添加一个 TextBox以便执行元素搜索。我不明白该怎么做。因为DataTemplate没有需要的属性。它是 UWP应用程序,不要 WPF .
TextBlock通过 MasterHeader 获得值(value)属性(property)。但是其他的怎么绑定(bind)。例如,占位符文本、事件处理程序。

MasterHeader="{x:Bind ViewModel.Title}"
MasterHeaderTemplate="{StaticResource MasterHeaderTemplate}"

<DataTemplate
x:Key="MasterHeaderTemplate">
<StackPanel>
<TextBlock
Text="{Binding}"
Style="{StaticResource HeaderStyle}" />
<TextBox
PlaceholderText="{???}" />
</StackPanel>
</DataTemplate>

enter image description here

最佳答案

您可以使用 Binding.ElementName属性来设置您的 MasterDetailsView 的名称以用作 Binding 的绑定(bind)源。然后您可以访问其 DataContext(例如您的 ViewModel)并将 ViewModel 中的属性与 PlaceholderText 绑定(bind)。例如:

.xaml:

<Page.Resources>
<DataTemplate x:Key="MasterHeaderTemplate">
<StackPanel>
<TextBlock
Text="{Binding}" />
<TextBox PlaceholderText="{Binding ElementName=MyDetailView,Path=DataContext.PlaceholderText}"/>
</StackPanel>
</DataTemplate>
</Page.Resources>

<Grid>
<controls:MasterDetailsView
ItemsSource="{Binding Lists}"
x:Name="MyDetailView" MasterHeader="{Binding Title}" MasterHeaderTemplate="{StaticResource MasterHeaderTemplate}">
<controls:MasterDetailsView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"></TextBlock>
</DataTemplate>
</controls:MasterDetailsView.ItemTemplate>
</controls:MasterDetailsView>
</Grid>

。CS:
public MainPage()
{
this.InitializeComponent();
ViewModel = new MyViewModel();
ViewModel.Title = "Header";
ViewModel.PlaceholderText = "MyPlaceholderText";

this.DataContext = ViewModel;
}
private MyViewModel ViewModel { get; set; }

关于c# - 带有用于搜索的文本框的 DataTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60506552/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com