快速访问用户控件的元素

时间:2013-08-09 22:21:45

标签: c# user-interface windows-8 user-controls microsoft-metro

我有这样的用户控制(例如):

<UserControl
x:Class="Tester.UC"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Tester"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400">

<Grid>
    <TextBlock Name="Name" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" Height="79" Width="380" FontSize="50" TextAlignment="Center"/>
    <Button Content="Button" HorizontalAlignment="Left" Margin="152,179,0,0" VerticalAlignment="Top"/>
    <TextBox Name="LastName" HorizontalAlignment="Left" Margin="0,109,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="390" Height="65" TextAlignment="Center" FontSize="40"/>

</Grid>

要访问此控件,我必须使用Name,然后使用Property。 有点像这样。

UC uc = new UC();
uc.LastName.Text = "text";

有没有办法更快地访问它?我的意思是......

  

uc.LastName =“Text”

2 个答案:

答案 0 :(得分:1)

您可以在代码隐藏中声明一个属性来包装LastName.Text。例如

public string LastNameText
{
    get { return LastName.Text; }
    set { LastName.Text = value; }
}

<TextBox Name="LastName" x:FieldModifier="private"/>

值得吗?我非常怀疑它。

答案 1 :(得分:0)

不是真的。 LastName是TextBox类型的对象,“Text”是一个字符串。您不能将字符串分配给TextBox。 TextBox.Text也是字符串类型,这就是为什么你可以为它分配“文本”。强类型对象是C#的一个非常标准的原则。

理论上你可以重载“=”运算符,但不建议这样做,因为它会让你的代码难以理解。