WPF对话框的设置保存问题

之前请教过弹出了一个进行参数设置的对话框,再次打开这个对话框时,仍显示输入的数据的问题,可如果我有两个或数个Button我希望每一个Button弹出的对话框都是独立的,也... 之前请教过 弹出了一个进行参数设置的对话框,再次打开这个对话框时,仍显示输入的数据 的问题 ,可如果我有两个或数个Button 我希望每一个Button弹出的对话框都是独立的,也就是说 在一个Button上进行的参数修改,不会影响另外Button的参数,该怎么办呢? 展开
 我来答
Mickal小米
2012-03-26 · TA获得超过3666个赞
知道大有可为答主
回答量:1542
采纳率:100%
帮助的人:1768万
展开全部
能再具体说明情况么,两个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对同一实例的两个属性进行操作
来自:求助得到的回答
GeminiYellow
2012-03-28 · TA获得超过101个赞
知道答主
回答量:87
采纳率:0%
帮助的人:67.3万
展开全部
初学者提的问题。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; }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式