WPF usercontrols на отдельных вкладках: почему переключатель groupname совместно использован вкладками?

Я использую управление вкладкой WPF для представления отдельных повторных экземпляров пользовательского элемента управления. т.е. Tab1 для настроек Item1, Tab2 для настроек Item2, и так далее.

Кажется, что имена группы переключателей совместно используются вкладками. Что продолжается?

Простой пример:

Окно содержит вкладки. Каждая вкладка содержит пользовательский элемент управления.

<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:lib="clr-namespace:WpfApplication1"
Title="Window1" Height="300" Width="300">
<Grid>
    <TabControl Margin="0,0,0,100" Name="tabControl1">
        <TabItem Header="tabItem1" Name="tabItem1">
            <lib:UserControl1 x:Name="userControlInTab1" />
        </TabItem>
        <TabItem Header="tabItem2" Name="tabItem2">
            <lib:UserControl1 x:Name="userControlInTab2" />
        </TabItem>
    </TabControl>
</Grid>

Пользовательский элемент управления является просто двумя переключателями в группе:

<UserControl x:Class="WpfApplication1.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="50" Width="100">
<StackPanel>
    <RadioButton GroupName="Group1" Name="radiobutton1" Content="option1" IsChecked="True" />
    <RadioButton GroupName="Group1" Name="radiobutton2" Content="option2" />
</StackPanel>

Если Вы запустите это приложение, то Вы будете видеть, что только radiobutton1 на второй вкладке проверяется, несмотря на usercontrol определение его, чтобы всегда быть проверенным при запуске.

Далее, установка переключателя, как зарегистрировался в коде позади, кажется, сняла флажок со всеми переключателями на других вкладках!

Кажется, что вещи ведут себя прекрасные под управлением мышью (т.е. вкладки независимы).

Наконец, usercontrols, действительно кажется, отдельные инстанцирования. Я попробовал это ползунками на пользовательских элементах управления, например, и они действительно ведут себя независимо через вкладки. Как они должны.

Спасибо за чью-либо справку с этим. Я искал широко напрасно. Конечно, я не единственный человек, у которого была эта проблема. Я использую VS2008.

10
задан Daniel 20 May 2010 в 06:22
поделиться

1 ответ

Без установки GroupName это работает. Это не является строго необходимым, поскольку RadioButton в одном контейнере в любом случае автоматически группируются. Например:

<UserControl x:Class="WpfApplication1.UserControl1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Height="50" Width="100">
    <StackPanel>
        <StackPanel>
            <RadioButton  Name="radiobutton1" Content="option1" IsChecked="True" />
            <RadioButton  Name="radiobutton2" Content="option2" />
        </StackPanel>
        <StackPanel>
            <RadioButton  Name="radiobutton3" Content="option3" IsChecked="True" />
            <RadioButton  Name="radiobutton4" Content="option4" />
        </StackPanel>
    </StackPanel>
</UserControl>
16
ответ дан 3 December 2019 в 18:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: