WPF UserControl - невозможно выбрать TextBox - PullRequest
1 голос
/ 06 ноября 2008

У меня действительно простой WPF UserControl:

<UserControl x:Class="dr.SitecoreCompare.WPF.ConnectionEntry"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
x:Name="connEntry" 
BorderBrush="Navy" BorderThickness="1" Margin="5,0,0,5" >
<StackPanel Margin="0,10,0,0" >
    <Label FontWeight="ExtraBold" Content="{Binding ElementName=connEntry, Path=Title}"></Label>
    <Label Margin="0,5,0,0">Server:</Label>
    <TextBox x:Name="txtServer" TabIndex="1" Text="{Binding Path=ServerName}" ></TextBox>
    <Label>Database:</Label>
    <TextBox x:Name="txtDatabase" TabIndex="2" Text="{Binding Path=DatabaseName}"></TextBox>
</StackPanel>

Это используется дважды в одном и том же окне. Теперь я могу выбрать первый TextBox в обоих экземплярах моего UserControl, но второе ("txtDatabase") текстовое поле не может быть выбрано ни вкладками, ни щелчком Почему это ? Я что-то упустил в отношении создания пользовательских контроллеров WPF?

EDIT: DatabaseName не только для чтения, это простое свойство. XAML для окна, в котором находится пользовательский элемент управления, выглядит следующим образом:

<Window x:Class="dr.SitecoreCompare.WPF.ProjectDialog"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:c="clr-namespace:dr.SitecoreCompare.WPF"       
    Title="Choose project" Height="280" Width="500" 
    WindowStartupLocation="CenterOwner" WindowStyle="SingleBorderWindow" HorizontalAlignment="Center" ShowInTaskbar="False" ShowActivated="True" ResizeMode="NoResize" VerticalContentAlignment="Top" VerticalAlignment="Center">
    <StackPanel>
        <Label>Choose databases</Label>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <c:ConnectionEntry Grid.Column="0" x:Name="connMaster" Title="Master:" Padding="5" />
            <c:ConnectionEntry Grid.Column="1" x:Name="connSlave"  Title="Slave:"  Padding="5" />
        </Grid>
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,0" >
            <Button x:Name="btnCancel" Click="btnCancel_Click">Cancel</Button>
            <Button x:Name="btnOK" Click="btnOK_Click">OK</Button>
        </StackPanel>
    </StackPanel>

</Window>

Ответы [ 2 ]

2 голосов
/ 11 ноября 2008

Попробуйте Mode = TwoWay в вашей привязке. Я видел это, когда инициализация устанавливает значение, а элемент управления не может установить значение.

<TextBox x:Name="txtDatabase" TabIndex="2" Text="{Binding Path=DatabaseName, Mode=TwoWay}"></TextBox>
0 голосов
/ 06 ноября 2008

Это работает в XamlPad, поэтому я думаю, что есть что-то за пределами кода, который вы опубликовали, который вызывает проблему. Является ли DatabaseName доступным только для чтения?

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