wpf UserControl获取并设置值

时间:2014-06-24 03:05:15

标签: c# wpf forms

我有一个用户控件

<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变得灵活?我的意思是每当我调整窗体大小时,控件的大小会有所不同,但字体大小会停滞不前。

1 个答案:

答案 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}"

休息绑定框架将为您处理