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