我有一个用户控件
<UserControl x:Class="NeocClinic.WPFSystem.Templatas.LoggedAsUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" BorderBrush="White" BorderThickness="0,0,0,1" >
<StackPanel Name="StackHeader">
<Grid ShowGridLines="False" >
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Name="tbLoggedAs" Text="Logged As:" Grid.Column="5" Grid.Row="0" FontWeight="Normal" FontSize="14"/>
<TextBlock Name="tbLogOut" Text="Log Out" Grid.Column="5" Grid.Row="1" FontWeight="Normal" FontSize="14" Cursor="Hand" MouseDown="tbLogOut_MouseDown"/>
</Grid>
</StackPanel>
</UserControl>
现在我想将tbLoggedAs.Text设置为记录器的用户名。
问题是,我无法在代码中找到用户控件和tbLoggedAs,除非我创建了这个用户控件的实例,但这样做意味着它将是一个不同的对象,而不是正在表单中部署的用户控件?
btw我想要设置的值已经完成,检索User对象。另外,我想获取tbLoggedAs的文本并将其用作我的CreatedBy字段的引用,但就像我说的,我无法在代码中找到它,智能感知器没有显示它们。
另外,有没有办法让FontSize变得灵活?我的意思是每当我调整窗体大小时,控件的大小会有所不同,但字体大小会停滞不前。
答案 0 :(得分:1)
您需要在此处使用绑定,以便将文本框绑定到相应的属性
例如
假设您在主视图模型中有一个名为LoggedInUser的属性或
后面的代码<TextBlock Name="tbLoggedAs" Text="{Binding LoggedInUser, StringFormat=Logged As: {0}" Grid.Column="5" Grid.Row="0" FontWeight="Normal" FontSize="14"/>
注意应用于Text属性的绑定
所以如果您将视图模型作为数据上下文,那么它将起作用,否则您可以在包含LoggedInUser属性的代码中分配数据上下文
例如
DataContext = this;
对于字体大小,您可能在视图模型中有另一个属性,该属性将根据应用程序大小计算,并将绑定到字体大小
例如
FontSize="{Binding FontSize}"
休息绑定框架将为您处理