WPF передача данных между окнами
Всем привет
Привет, у меня проблема с привязкой данных. Я могу связать данные между элементами управления внутри одного окна, но использование одних и тех же данных между несколькими окнами тривиально.
Вот очень простая программа, надеюсь, вы поняли идею
Window1. xaml (может быть приложением MainWindow)
<window x:class="WPF_Template.Window1" xmlns:x="#unknown"> xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1. Able to be synchronized with window2" Height="145" Width="359"> <grid> <stackpanel> <slider name="slider"> Margin="4" Interval="1" TickFrequency="1" IsSnapToTickEnabled="True" Minimum="0" Maximum="100"/> <stackpanel orientation="Horizontal"> <textblock width="Auto" horizontalalignment="Left"> VerticalAlignment="Center" Margin="4" Text="Gets and sets the value of the slider:" /> <textbox width="40" horizontalalignment="Center" margin="4"> Text="{Binding ElementName=slider, Path=Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> </textbox></textblock></stackpanel> <Button Content="Show Window2" Click="Button_Click"></Button> </slider></stackpanel> </grid> </window>
и файл window1.язык XAML.в CS
using System.Windows; namespace WPF_Template { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class Window1 : Window { public Window1() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { Window2 window2 = new Window2(); window2.Show(); } } }
Теперь у нас есть window1 и мы хотим создать window2
<window x:class="WPF_Template.Window2" xmlns:x="#unknown"> xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window2. Always synchronized with window1" Height="126" Width="355"> <grid> <stackpanel> <slider name="slider" margin="4" interval="1" tickfrequency="1"> IsSnapToTickEnabled="True" Minimum="0" Maximum="100"/> <stackpanel orientation="Horizontal"> <textblock width="Auto" horizontalalignment="Left"> VerticalAlignment="Center" Margin="4" Text="Gets and sets the value of the slider:" /> <textbox width="40" horizontalalignment="Center" margin="4"> Text="{Binding ElementName=slider,Path=Value,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> </textbox></textblock></stackpanel> <Button Content="Close" Click="Button_Click"></Button> </slider></stackpanel> </grid> </window>
и Window2.язык XAML.в CS
using System.Windows; namespace WPF_Template { /// <summary> /// Interaction logic for Window2.xaml /// </summary> public partial class Window2 : Window { public Window2() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { this.Close(); } } }
Итак, то, что я хочу сделать, это то, что Window1 и window2 синхронизированный между собой. Если вы скомпилируете мой код, то увидите, что данные привязаны внутри windows индивидуально и нет никакого взаимодействия между окнами.
Пожалуйста, дайте мне совет!
Лучшие рекарды
Черт, не могу опубликовать свой полный xaml-код. Надеюсь, у вас все равно есть идея :doh: