C# 如何在xaml uwp中直接绑定属性

C# 如何在xaml uwp中直接绑定属性,c#,xaml,uwp,C#,Xaml,Uwp,Xaml代码 描述 我想从ResourceModel绑定我的textblock,而不使用DataContext和textblock的名称。只有我需要使用属性名进行绑定 有几个地方你错过了。以下是有关em的一些信息: 绑定正在搜索不可用的数据上下文。如果您没有viewmodel,并且希望使用旧绑定将UI元素绑定到后面的代码,则需要在xaml标记中添加DataContext={binding RelativeSource={RelativeSource Mode=Self}}。这将告诉绑定引擎您正在

Xaml代码

描述
我想从ResourceModel绑定我的textblock,而不使用DataContext和textblock的名称。只有我需要使用属性名进行绑定

有几个地方你错过了。以下是有关em的一些信息:

绑定正在搜索不可用的数据上下文。如果您没有viewmodel,并且希望使用旧绑定将UI元素绑定到后面的代码,则需要在xaml标记中添加DataContext={binding RelativeSource={RelativeSource Mode=Self}}。这将告诉绑定引擎您正在绑定到后面的代码。 此外,不能绑定到字段,只能绑定到属性,因为字段没有get和set。因此,在vm后面的代码中是一个字段而不是属性。将其更改为public ResourceModel vm{get;set;}=new ResourceModel;它会开始工作的。 也就是说,有三种方法可以实现:

1.使用绑定到codebehind: 在标记中添加DataContext={Binding RelativeSource={RelativeSource Mode=Self}},告知绑定引擎将绑定到代码隐藏

您的文本块代码如下所示:

<TextBlock Text="{Binding vm.Resource[Account] ,Mode=TwoWay}" FontSize="15" Margin="10 0 30 0" Foreground="White" VerticalAlignment="Top" HorizontalAlignment="Center" Grid.Row="1" Grid.Column="0"></TextBlock>
3.使用x:bind进行代码隐藏绑定 默认情况下,x:bind绑定到后面的代码,因此您可以使用x:bind代替绑定。使用x:bind所面临的问题是,在使用x:bind时,无法在xaml中设置键。使用转换器,然后将您的密钥作为转换器参数传递,所有这些都将开始正常工作。如果您确实计划使用它,下面是xaml代码:

 <TextBlock Text="{Binding Resource[Account]}">
       <TextBlock.DataContext>
            <local:ResourceModel/>
       </TextBlock.DataContext>
  </TextBlock>

使用x:Bind?Text={x:Bind vm.Resource[Account],Mode=TwoWay}@mm8错误绑定路径“vm.Resource[Account]”无效index@mm8如何传递字符串帐户
<TextBlock Text="{Binding vm.Resource[Account]}"/>
 <TextBlock Text="{Binding Resource[Account]}">
       <TextBlock.DataContext>
            <local:ResourceModel/>
       </TextBlock.DataContext>
  </TextBlock>
<TextBlock Text="{x:Bind vm.Resource,Converter={StaticResource DictionaryValueFetcher},ConverterParameter='account'}"/>