WPF对话框的设置保存问题
之前请教过弹出了一个进行参数设置的对话框,再次打开这个对话框时,仍显示输入的数据的问题,可如果我有两个或数个Button我希望每一个Button弹出的对话框都是独立的,也...
之前请教过 弹出了一个进行参数设置的对话框,再次打开这个对话框时,仍显示输入的数据 的问题 ,可如果我有两个或数个Button 我希望每一个Button弹出的对话框都是独立的,也就是说 在一个Button上进行的参数修改,不会影响另外Button的参数,该怎么办呢?
展开
2个回答
展开全部
能再具体说明情况么,两个button本身就是独立的UI,它们本来就不会影响对方啊,我的理解是你是不是说这两个button操作了同一个对象,比如一个people的实例,它有个age的属性,默认是10。然后一个addage的btn一个minage的btn。它们操作的情况是一个加1岁,一个减一岁。然后各自出现的对话框是9和11???是否要实现这样的效果?
更多追问追答
追问
恩 就是操作同一个对象,比如第一个Button1第一次弹出对话框的时候,age的值是空,输入9关闭后,点击另一个Button2 出现的对话框的age属性不是9 而是空的,输入11关闭后,在打开Button1,它的age属性还是9
追答
那只能创建两个实例,或者button1和button2对同一实例的两个属性进行操作
来自:求助得到的回答
展开全部
初学者提的问题。WPF的MVVM对这种问题完全无压力。
首先,你不是只想知道对一个两个Button,而是对于你想修改的数据是怎么和UI绑定起来的。
应该是这样吧?
那好,不多说,贴代码,你看看能理解多少。
=======================================================
View部分。
<Window x:Class="HelloKittyDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="7*"/>
</Grid.ColumnDefinitions>
<ListBox x:Name="DataList" ItemsSource="{Binding Datas}" DisplayMemberPath="Name" SelectionMode="Single"/>
<Grid Grid.Column="1" Background="Azure">
<TextBox x:Name="Detail" HorizontalAlignment="Stretch" VerticalAlignment="Center"
DataContext="{Binding ElementName=DataList, Path=SelectedItem}"
Text="{Binding Age}">
</TextBox>
</Grid>
</Grid>
</Window>
public partial class MainWindow : Window
{
public MainWindowViewModel ViewModel
{
set { DataContext = value; }
get { return (MainWindowViewModel) DataContext; }
}
public MainWindow()
{
InitializeComponent();
Loaded += delegate
{
ViewModel = new MainWindowViewModel();
ViewModel.Datas.Add(new People { Name = "A", Age = "1" });
ViewModel.Datas.Add(new People { Name = "B", Age = "2" });
ViewModel.Datas.Add(new People { Name = "C", Age = "3" });
ViewModel.Datas.Add(new People { Name = "D", Age = "4" });
ViewModel.Datas.Add(new People { Name = "E", Age = "5" });
};
}
}
ViewModel部分
public class MainWindowViewModel : INotifyPropertyChanged
{
private ObservableCollection<People> _datas;
public ObservableCollection<People> Datas
{
get { return _datas ?? (_datas = new ObservableCollection<People>()); }
}
#region Implementation of INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void NotifyPropertyChanged(string info)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(info));
}
#endregion
}
public class People
{
public string Name { get; set; }
public string Age { get; set; }
}
首先,你不是只想知道对一个两个Button,而是对于你想修改的数据是怎么和UI绑定起来的。
应该是这样吧?
那好,不多说,贴代码,你看看能理解多少。
=======================================================
View部分。
<Window x:Class="HelloKittyDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="7*"/>
</Grid.ColumnDefinitions>
<ListBox x:Name="DataList" ItemsSource="{Binding Datas}" DisplayMemberPath="Name" SelectionMode="Single"/>
<Grid Grid.Column="1" Background="Azure">
<TextBox x:Name="Detail" HorizontalAlignment="Stretch" VerticalAlignment="Center"
DataContext="{Binding ElementName=DataList, Path=SelectedItem}"
Text="{Binding Age}">
</TextBox>
</Grid>
</Grid>
</Window>
public partial class MainWindow : Window
{
public MainWindowViewModel ViewModel
{
set { DataContext = value; }
get { return (MainWindowViewModel) DataContext; }
}
public MainWindow()
{
InitializeComponent();
Loaded += delegate
{
ViewModel = new MainWindowViewModel();
ViewModel.Datas.Add(new People { Name = "A", Age = "1" });
ViewModel.Datas.Add(new People { Name = "B", Age = "2" });
ViewModel.Datas.Add(new People { Name = "C", Age = "3" });
ViewModel.Datas.Add(new People { Name = "D", Age = "4" });
ViewModel.Datas.Add(new People { Name = "E", Age = "5" });
};
}
}
ViewModel部分
public class MainWindowViewModel : INotifyPropertyChanged
{
private ObservableCollection<People> _datas;
public ObservableCollection<People> Datas
{
get { return _datas ?? (_datas = new ObservableCollection<People>()); }
}
#region Implementation of INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void NotifyPropertyChanged(string info)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(info));
}
#endregion
}
public class People
{
public string Name { get; set; }
public string Age { get; set; }
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询