我开始尝试使用C#和XAML创建一个现代应用程序。我已经使用过C#了,但是我从未接触过XAML或WPF代码,所以我有一个初学者问题..
我正在使用MSFT模板Hub App(XAML),但我不知道如果该文本块位于datatemplate内,我如何通过C#代码在TextBlock上设置文本值。
有人可以帮我解决这个问题吗?
我已经用谷歌搜索了它,但我无法得到任何回答/解释的网站。
这是我正在尝试做的一个例子:
XAML:
<DataTemplate >
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Image Source="Assets/MediumGray.png" Stretch="Fill" Width="420" Height="280"/>
<TextBlock Style="{StaticResource SubheaderTextBlockStyle}" Grid.Row="1" Margin="0,10,0,0" TextWrapping="Wrap"
x:Uid="Section1Subtitle" Text="{Binding Score}"/>
<TextBlock x:Name="desc" Grid.Row="2" Margin="0,10,0,0"
x:Uid="DescriptionHeader" Text="{Binding Test}"/>
<TextBlock x:Name="texttest" Grid.Row="3"
Text="{Binding Name}"/>
</Grid>
</DataTemplate>
C#代码:
public class Class1
{
string name = "This is a test";
public string Name
{
get { return name; }
set { name = value; }
}
}
我在这里做错了什么?
提前致谢,
答案 0 :(得分:1)
问题解决了。
非常感谢你的帮助。
以下是带有更改的代码,允许我从C#中获取变量:
<DataTemplate>
<Grid>
<Grid.DataContext>
<local:Class1/>
</Grid.DataContext>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Image Source="Assets/MediumGray.png" Stretch="Fill" Width="420" Height="280"/>
<TextBlock Style="{StaticResource SubheaderTextBlockStyle}" Grid.Row="1" Margin="0,10,0,0" TextWrapping="Wrap"
x:Uid="Section1Subtitle" Text="{Binding Score}"/>
<TextBlock x:Name="desc" Grid.Row="2" Margin="0,10,0,0"
x:Uid="DescriptionHeader" Text="{Binding Test}"/>
<TextBlock x:Name="texttest" Grid.Row="3"
Text="{Binding Name}"/>
</Grid>
</DataTemplate>
答案 1 :(得分:0)
本演讲还将向您介绍WP开发的许多方面,包括使用设备,动态磁贴等: http://www.jeffblankenburg.com/2011/10/31/31-days-of-mango/
虽然有点老了。
答案 2 :(得分:0)
通常无法在c#代码中轻松设置DataTemplate内部的内容。但是,通过绑定,转换器和选择器,有一些混乱的方法。
答案 3 :(得分:0)
XAML提供了一种简单而强大的方法来自动更新数据 商业模式和用户界面。这种机制被称为 数据绑定。每当您的业务模型数据发生变化时, 它会自动反映用户界面和副的更新 反之亦然。这是WPF中将数据提供给用户的首选方法 接口
数据绑定可以是单向的(来源 - >目标或目标&lt; - 源)或双向(源&lt; - &gt;目标)。
试用链接Learn XAML。
答案 4 :(得分:0)
在抽象中,DataTemplate
是某个数据的视觉表示。
DataTemplate中的UI元素应反映此类数据的状态。
在基于XAML的技术中,DataBinding有助于保持UI与数据同步,使用非常干净和漂亮的声明方式,而不是传统的程序编程。
所以,假设您有一些数据,例如:
public class Person
{
public string FirstName {get;set;}
public string LastName {get;set;}
}
然后您可能有一个表示该数据的DataTemplate,例如:
<DataTemplate DataType="local:Person">
<StackPanel>
<TextBlock Text="{Binding LastName}"/>
<TextBlock Text="{Binding FirstName}"/>
</StackPanel>
</DataTemplate>
密钥位于{Binding}
声明中。
有关详细信息,请参阅上面链接的MSDN文章。