Я использую вкладку 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 определяет его для проверки при запуске.
Кроме того, установка радиокнопки, как отмечено в коде, похоже, снимает флажки со всех радиокнопок в других вкладках!
Кажется, что все работает хорошо под управлением мыши (т.е. вкладки независимы).
Наконец, пользовательские элементы управления кажутся отдельными экземплярами. Я пробовал это с ползунками на пользовательских элементах управления, например, и они ведут себя независимо на разных вкладках. Как они должны.
Спасибо за любую помощь в этом. Я искал широко безрезультатно. Конечно, я не единственный человек, который имел эту проблему. Я использую VS2008.