无法访问UserControl中的子元素

时间:2013-04-23 12:38:18

标签: c# xaml microsoft-metro

我创建了一个带有TextBlock的UserControl,问题是我无法从使用此Usercontrol的MainPage更改此UserControl的文本。

Plz帮助我成为Metro风格App的新手基本上是windows手机开发者。检查下面的usercontrol源。

<UserControl
x:Class="Version1forMainMenu.MyUserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Version1forMainMenu"
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" x:Name="MyUserControl1">

<Grid x:Name="grid_amorti"  PointerEntered="gride_quickestimate_PointerEntered" PointerExited="gride_quickestimate_PointerExited" PointerPressed="gride_quickestimate_PointerPressed" PointerReleased="gride_quickestimate_PointerReleased" Tapped="gride_quickestimate_Tapped">
    <Grid.Background>
        <ImageBrush ImageSource="Image/inside_menu_normal.png"/>            
    </Grid.Background>


    <TextBlock Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="3"  x:Name="edit"   Text="" FontSize="30" FontWeight="Bold" VerticalAlignment="Center" FontFamily="Global User Interface" Margin="10,112,29,111" ></TextBlock>
    <Image Grid.Row="1" x:Name="img" Grid.Column="5" Source="Image/small_arrow.png"  />


</Grid>

我无法从使用此UserControl的页面访问名为“edit”的文本块。

3 个答案:

答案 0 :(得分:0)

完全正常,因为用户控件中的控件无法公开访问。您应该在usercontrol中定义公共属性以使这些控件可用...

答案 1 :(得分:0)

您好像错过了Grid.ColumnDefinitionGrid.RowDefinition

<Grid x:Name="grid_amorti" ...>  
    <Grid.Background>
         <ImageBrush ImageSource="Image/inside_menu_normal.png"/>            
    </Grid.Background>
    <Grid.ColumnDefintion>

    </Grid.ColumnDefinition>
    <Grid.RowDefiniton>

    </Grid.RowDefinition>
</Grid>

所以你实际上放错了他们......

答案 2 :(得分:0)

这是正常的,TextBlock是UserControl中的私有字段。您需要重新公开您希望能够修改的属性,例如使用此技术:http://www.geekchamp.com/tips/how-to-expose-properties-of-a-user-control-in-windows-phone