
我正在使用MV-VM架构模式.
我想我的程序有两种观点,视图A和视图B.我用View A启动程序.视图B是由程序时,我双击在项所示观.
我应该如何构建我的程序,以便我可以实现这一目标?
我有一个ObservableCollection绑定到列表框
public ObservableCollection<InsertionVM> Insertions
{
get
{
return _insertions;
}
set
{
_insertions = value;
base.OnPropertyChanged("ChromosomeList");
}
}
Run Code Online (Sandbox Code Playgroud)
它的成员InsertionVM实现INotifyPropertyChanged。它具有将被更新的属性。
public bool IsChecked
{
get
{
return _isChecked;
}
set
{
_isChecked = value;
base.OnPropertyChanged("IsChecked");
}
}
Run Code Online (Sandbox Code Playgroud)
即使为每个属性实现INotifyPropertyChanged接口,为什么ObservableCollection也不会刷新?
我尝试了下面给出的链接,但是“更敏感的集合”仅在删除/添加对象时才更新。
if (e.Action == NotifyCollectionChangedAction.Remove)
{
foreach (InsertionVM item in e.NewItems)
{
//Removed items
item.PropertyChanged -= EntityViewModelPropertyChanged;
}
}
else if (e.Action == NotifyCollectionChangedAction.Add)
{
foreach (InsertionVM item in e.NewItems)
{
//Added items
item.PropertyChanged += EntityViewModelPropertyChanged;
}
} …Run Code Online (Sandbox Code Playgroud) 
上图说明了我的计划.箭头表示Binding.
我的MainWindow.xaml将其datacontext设置为MainVM.
窗口有绑定到一个选项卡控件ObservableCollection的ViewModel秒.使用数据模板,选项卡控件显示与其对应的视图ViewModel.
在ObservableCollection被发现的MainVM.
如何访问MainVMfrom中找到的属性ViewModel(包含在ObservableCollection中)?
我愿意接受需要修改我的编程模型的答案.
这是一个简单的问题,但我似乎无法找到明确的答案.
如何设置我的应用程序图标(菜单中显示的图标)

一个与强调色相匹配的?目前唯一的方法是覆盖ApplicationIcon.jpg,但jpgs没有透明度
编辑:
这就是我以前的工作方式.复制.png文件,然后将其重命名为.jpg.它必须是完全相同的名称,否则您将收到错误2 xap打包失败.
我正在使用Josh Smith 使用路由命令实现 MVVM命令.我有一个MenuItem绑定命令.
输入绑定在父窗口中定义.当我运行程序时,我可以使用键盘快捷键,但MenuItem不会显示标题Control+O旁边的MenuItem.

命令绑定:
<Window.CommandBindings>
<cmd:CommandSinkBinding Command="vm:MainVM.OpenDialogCommand" />
</Window.CommandBindings>
<Window.InputBindings>
<KeyBinding Command="vm:MainVM.OpenDialogCommand" Key="O" Modifiers="Ctrl"/>
</Window.InputBindings>
Run Code Online (Sandbox Code Playgroud)
菜单项:
<MenuItem Header="Open" Command="vm:MainVM.OpenDialogCommand" />
Run Code Online (Sandbox Code Playgroud)
注意: MenuItem是样式化的,但删除样式并没有什么区别.
我的程序中有以下代码行
public Chromosome NewChromosome { get; public set; }
Run Code Online (Sandbox Code Playgroud)
这给出了以下错误:
错误1
'ARP_TLL.DataAccess.ChromosomeAddedEventArgs.NewChromosome.set'访问者的可访问性修饰符必须比属性或索引器更具限制性'ARP_TLL.DataAccess.ChromosomeAddedEventArgs.NewChromosome'
C:\Users\kiangtengl\Programming\Projects\ARP_TLL\ARP_TLL\DataAccess\ChromosomeAddedEventArgs.cs16
55
ARP_TLL
我已经尝试修改访问者和属性的可访问性修饰符,但我无法解决问题.
作为参考,这是类型 Chromosome
public class Chromosome
{
#region properties
public int Length
{
get;
set;
}
public int Number
{
get;
set;
}
#endregion
#region creation
public static Chromosome CreateChromosome(int _length, int _number)
{
return new Chromosome
{
Length = _length, Number = _number,
};
}
#endregion
}
Run Code Online (Sandbox Code Playgroud) 我有一个定制风格ListBoxItem与Border周围的ContentPresenter.(代码见下文).我的边框充当我的选择指示器,当您选择它时会变为灰色.当我使用鼠标时一切都很好,但是当我使用键盘时,会出现一个丑陋的虚线灰色边框.我该如何删除它?

您可以看到,当我鼠标悬停/单击时ListBoxItem,包含背景的边框环绕该项目.但是当我使用键盘时,会出现一个丑陋的虚线边框.
<Style x:Key="{x:Type ListBoxItem}" TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<StackPanel>
<Border Name="HighlightBorder"
Padding="30"
BorderBrush="Transparent"
BorderThickness="1"
CornerRadius="5"
>
<ContentPresenter/>
</Border>
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="HighlightBorder" Property="Background" Value="#F3F3F3"/>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="HighlightBorder" Property="Background" Value="#DFDFDF"/>
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="True">
<Setter TargetName="HighlightBorder" Property="Background" Value="#DFDFDF"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
Run Code Online (Sandbox Code Playgroud) 如何在不使用鼠标禁用选择的情况下禁用WPF ListBox中的键盘导航?
我有一个Number由类继承的基类One,Two和Three.
我有一个房产
public Number SomeNumber{get;set;}
Run Code Online (Sandbox Code Playgroud)
起初,我已SomeNumber任One,Two或Three(值会随机生成).
后来,我想设置SomeNumber一个与旧类相同类型的新类.这可能吗?如果是这样,怎么样?
在初始化时,SomeNumber设置为One
稍后在程序中,我想设置SomeNumber一个新的实例One.
c# ×9
wpf ×6
.net ×3
mvvm ×3
c#-4.0 ×1
command ×1
data-binding ×1
keyboard ×1
listbox ×1
wpf-controls ×1