теги в XAML - PullRequest
       10

теги в XAML

0 голосов
/ 28 мая 2011

Я унаследовал некоторый код, где я видел эту конструкцию, к которой я не привык, в нескольких местах:

    <view:Content x:Name="TimeFrame" Margin="220,50,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" >
        <view:Content.ChildContent>
            <view:TimeFrame />
        </view:Content.ChildContent>
    </view:Content>

То, что я должен признать, кажется довольно изящным, и пока работает так, как я этого хочу. Тем не менее, здесь вместо тега <view:TimeFrame /> в центре расположены обычные контрольные теги, например:

    <view:Content x:Name="SignInControl" Margin="466,317,0,0" HorizontalAlignment="Left" Width="348" Height="344" VerticalAlignment="Top">
        <view:Content.ChildContent>
            <Grid>
                <Border  CornerRadius="8,8,0,0" BorderThickness="1" Width="270" Height="300" Background="#666666" Margin="1,0,-1,0" Opacity="0.57"  >
                    <Border.Effect>
                        <BlurEffect/>
                    </Border.Effect>
                </Border>
                <Border  CornerRadius="8,8,0,0" BorderThickness="1" Width="270" Height="300" Background="#FFF3F5F4">
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="15"/>
                            <RowDefinition Height="100"/>
                            <RowDefinition Height="25"/>
                            <RowDefinition Height="40"/>
                            <RowDefinition Height="40"/>
                            <RowDefinition Height="20"/>
                            <RowDefinition Height="20"/>
                            <RowDefinition Height="auto"/>
                        </Grid.RowDefinitions>
                        <TextBlock Grid.Row="0" Text="ChartWizz" FontFamily="Verdana" FontSize="10" Margin="0,3,0,0" HorizontalAlignment="Center" VerticalAlignment="Center" />
                        <ToggleButton Style="{StaticResource up_down}" Checked="ToggleButton_Checked" />
                        <Image Source="Pictures/logo_250.png" Margin="5"  Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" />
                        <StackPanel Width="210" Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center" >
                            <TextBlock Text="Change User or"  Margin="0,0,3,0" FontFamily="Verdana" FontSize="11" />
                            <Button Style="{StaticResource LinkButton}" Click="CreateNewAccLink_Click" Margin="2, 0, 0, 0">
                                <TextBlock Text="Create new account" FontFamily="Verdana" FontSize="11" Foreground="Black"   TextDecorations="Underline"/>
                            </Button>
                        </StackPanel>
                        <StackPanel Grid.Row="3" Orientation="Vertical" HorizontalAlignment="Center" >
                            <TextBlock  Text="Username" FontFamily="Verdana" FontSize="10" Margin="0,0,0,3" HorizontalAlignment="Left" VerticalAlignment="Center" />
                            <TextBox Width="210" Height="20" HorizontalAlignment="Left" />
                        </StackPanel>
                        <StackPanel Grid.Row="4" Orientation="Vertical" HorizontalAlignment="Center" >
                            <TextBlock  Text="Password" FontFamily="Verdana" FontSize="10" Margin="0,4,0,3" HorizontalAlignment="Left" VerticalAlignment="Center" />
                            <PasswordBox Width="210" Height="20" HorizontalAlignment="Left"  />
                        </StackPanel>
                        <Grid Grid.Row="5" HorizontalAlignment="Left" >
                            <Button Style="{StaticResource LinkButton}" Click="ForgotPassLink_Click" Margin="2, 0, 0, 0" HorizontalAlignment="Left">
                                <TextBlock  Text="Forgot your password?"  Width="Auto" Foreground="Black" TextDecorations="Underline" FontFamily="Verdana" FontSize="10" Margin="27,5,0,3" HorizontalAlignment="Left" VerticalAlignment="Center" />
                            </Button>
                        </Grid>
                        <StackPanel Grid.Row="7" Width="210" Margin="0,5,0,0" Orientation="Horizontal" HorizontalAlignment="Center" >
                            <CheckBox  Content="Remember me" FontFamily="Verdana" FontSize="10" Margin="0,4,0,3" HorizontalAlignment="Left" VerticalAlignment="Center" />
                            <Button Width="60" Content="Sign in" Height="23" Margin="55,0,0,0" VerticalAlignment="Center" Click="SiginBtn_Click" />
                        </StackPanel>
                    </Grid>
                </Border>
            </Grid>
        </view:Content.ChildContent>
    </view:Content>

Когда я попытался дать элементам управления имена, чтобы я мог получить к ним доступ в коде, я получил следующую ошибку:

Невозможно установить значение атрибута Name 'txtBox_username' для элемента 'TextBox'. «TextBox» находится в области действия элемента «Content», имя которого уже зарегистрировано, когда оно было определено в другой области.

Я не знаю, возможно ли получить доступ к этим членам каким-либо другим способом через область Контента, но если кто-то меня просветит, я был бы благодарен. В любом случае мне бы очень хотелось получить ссылку на соответствующую страницу MSDN (или другой ресурс), так как я не могу понять, что искать, чтобы узнать больше о тегах типа.

Спасибо

1 Ответ

1 голос
/ 28 мая 2011

Это поведение вызвано тем, как UserControls реализовано, см. этот вопрос для обходных путей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...