Изменить список из MainWindow в WPF

Я пытаюсь изменить List которые связаны с DataGrid от MainWindow (Список находится в другом классе). Как мне это сделать? List содержит Tuple с 2 strings и я хочу изменить только второй string когда пользователь вводит новые значения в textBox в диалоговом окне (которое он открывает после нажатия на кнопку в MainWindow,

(В конце я хочу, чтобы пользователь ввел значения в этом диалоговом окне, а затем показал его в списке на другой странице (я имею в виду другой пользовательский элемент управления), так что я открыт, чтобы услышать также о других способах, чем этот список привязки кортежей к DataGrid).

Как мне изменить эту строку с другой страницы (я имею в виду от MainWindow)? Я пытался использовать MVVM, проблема в том, что я не нахожу никакой связи между mainWindow и пользовательским элементом управления.

Name_List.xaml.cs:

    namespace MyApp.Pages.SomeLists
    {

        public partial class Name_List: UserControl
        {
            private List<Tuple<string, string>> myNamesList = new List<Tuple<string, string>>();


            public Name_List()
            {
                InitializeComponent();


               myNamesList.Add(new Tuple<string, string>("First Name", your_name_bind));
               myNamesList.Add(new Tuple<string, string>("Last Name", your_lastName_bind));

NamesGrid.ItemsSource = myNamesList;*/
            }

        }
    }

Name_List.xaml:

<UserControl x:Class="MyApp.Pages.SomeLists.Name_List"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:MyApp.Pages.SomeLists"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">

    <Grid>
        <DataGrid Name="NamesGrid" CanUserReorderColumns="True" CanUserResizeColumns="False" CanUserResizeRows="False" HorizontalAlignment="Left"
                  GridLinesVisibility="All">
        </DataGrid>
    </Grid>

</UserControl>

MainWindow.xaml:

<mui:ModernWindow x:Class="MyApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mui="http://firstfloorsoftware.com/ModernUI"
        Title="App" IsTitleVisible="True"         
        Width="1200"
        ContentSource="/Pages/Home.xaml">

    <mui:ModernWindow.MenuLinkGroups>
        <mui:LinkGroup DisplayName="Home page">
            <mui:LinkGroup.Links>
                <mui:Link DisplayName="home" Source="/Pages/Home.xaml" />
            </mui:LinkGroup.Links>
        </mui:LinkGroup>
        <mui:LinkGroup DisplayName="Lists" >
            <mui:LinkGroup.Links>
                <mui:Link DisplayName="Open Lists" Source="/Pages/MainLists.xaml" />
            </mui:LinkGroup.Links>
        </mui:LinkGroup>
        <mui:LinkGroup DisplayName="settings" GroupKey="settings">
            <mui:LinkGroup.Links>
                <mui:Link DisplayName="software" Source="/Pages/SettingsPage.xaml" />
            </mui:LinkGroup.Links>
        </mui:LinkGroup>
    </mui:ModernWindow.MenuLinkGroups>

 <mui:ModernWindow.TitleLinks>
        <mui:Link x:Name="connect" DisplayName="connect"/>
        <mui:Link DisplayName="settings" Source="/Pages/SettingsPage.xaml" />
        <mui:Link DisplayName="help" Source="https://github.com" />
    </mui:ModernWindow.TitleLinks>

</mui:ModernWindow>

MainWindow.xaml.cs

- Здесь есть длинный код... соответствующая часть "connect_fun() "функция, которая вызывается после того, как пользователь нажимает" ОК "в диалоговом окне, которое открывается ему после того, как он щелкнул на вкладке" подключение ". диалоговое окно содержит 2 текстовых поля.--

namespace MyApp
    public partial class MainWindow : ModernWindow
    {
        private string name = "";
        private string lastName = "";

        //Here i create a Modern dialog in code.
            .....

        TextBox name_txt = new TextBox();
        TextBox lastName_txt = new TextBox();

        public MainWindow()
        {
            InitializeComponent();


        }

        private void connect_fun(object sender, RoutedEventArgs e)
        {
            name= name_txt.Text;
            lastName = lastName_txt_txt.Text;

        }

    }
}

MainLists.xaml:

<UserControl x:Class=MyApp.Pages.MainLists"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:mui="http://firstfloorsoftware.com/ModernUI" 
             xmlns:local="clr-namespace:MyApp.Pages"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">
    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Pages/Styles/BaseButtonStyle2.xaml"></ResourceDictionary>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </UserControl.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Grid Grid.Row="0">
                   ...
        </Grid>
        <Grid Style="{StaticResource ContentRoot}" Grid.Row="1">
            <mui:ModernTab SelectedSource="/Pages/SomeLists/Name_List.xaml" Layout="Tab" >
                <mui:ModernTab.Links>
                    <mui:Link DisplayName="Name List" Source="/Pages/SomeLists/Name_List.xaml"/>
                    <mui:Link DisplayName="Cars List" Source="/Pages/SomeLists/Cars_List.xaml"/>
                </mui:ModernTab.Links>
            </mui:ModernTab>

        </Grid>

    </Grid>
</UserControl>

Я хочу связать имя и фамилию с dataGrid в Name_List.xaml (это означает, что your_name_bind а также your_lastName_bind в myNamesList в моем случае).

0 ответов

Другие вопросы по тегам