我正在尝试学习MVVM Light,我正在寻找一个展示模型以及如何加载不同视图的基本示例.
我下载MVVM Light后看到的模板没有模型,只有一个视图.(http://www.galasoft.ch/mvvm/creating/)
我发现的其他东西更复杂,有点令人困惑,我想看到的只是基础知识.
谢谢.
我有一个图像显示在DataTemplate中。我想在单击图像时更改图像周围的DataTemplate的样式。
过去,它通常直接嵌套在如下所示的堆栈面板中,因此我可以通过执行以下操作轻松获得父堆栈面板。
StackPanel sp = img.Parent as StackPanel;
Run Code Online (Sandbox Code Playgroud)
<StackPanel Name="uxSessionImageItem" Style="{DynamicResource RotatorItemTemplateUnselectedStyle}" Loaded="uxSessionImageItem_Loaded" >
<TextBlock Name="uxLabel" Width="150" Text="{Binding SessionImageID}" Foreground="White" VerticalAlignment="Center"/>
<Image MouseDown="ImagePanel_MouseDown" Name="uxImage" Style="{DynamicResource ItemTemplateImageStyle}" Source="{Binding ThumbPath}"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
我必须在图像和需要找到的堆栈面板之间添加另一个堆栈面板和边框。我需要什么语法查找不是现在是我的父对象的边框,也不是是该边框的父对象的堆栈面板,而是找到那个上方的堆栈面板?
<StackPanel Name="uxSessionImageItem" Style="{DynamicResource RotatorItemTemplateUnselectedStyle}" Loaded="uxSessionImageItem_Loaded" >
<TextBlock Name="uxLabel" Width="150" Text="{Binding SessionImageID}" VerticalAlignment="Center" Style="{DynamicResource ItemTemplateImageNumberStyle}"/>
<StackPanel Name="uxSessionImageWrapper" Style="{DynamicResource RotatorItemImageWrapperStyle}" >
<Border Name="uxImageBorder" Style="{DynamicResource ItemTemplateImageBorderStyle}">
<Image MouseDown="ImagePanel_MouseDown" Name="uxImage" Style="{DynamicResource ItemTemplateImageStyle}" Source="{Binding ThumbPath}"/>
</Border>
</StackPanel>
</StackPanel>
Run Code Online (Sandbox Code Playgroud) 我有一个使用控件模板设置样式的WPF菜单。然后,客户希望对顶层导航项使用图像而不是文本。
没问题,我为每个顶级项目创建了一个控件模板,并在每个MenuItem上设置了我的Template属性,以匹配自定义模板,如下所示。我有一个触发器,可以在翻转时更改图像。
我的问题是,当您单击菜单项时,该菜单项应具有不再下拉的子菜单项。
该命令针对没有孩子的顶级项目触发。并且,一旦我从菜单项中删除带有子级的指定模板的代码,我就会看到带有下拉菜单的文本版本。
我该怎么做才能保留基于图像的顶级菜单项并保留下拉菜单?
提前致谢。
<Menu Grid.Row="0" Grid.Column="0" Name="uxMenu" Margin="0 2 0 0">
<MenuItem Header="Home" Name="uxHome" Command="cmds:NavigationCommands.HomeViewNavigationCommand" Template="{DynamicResource HomeButtonTemplate}"/>
<MenuItem Header="Admin" Name="uxAdmin" Template="{DynamicResource MenuExitButtonTemplate}">
<MenuItem Header="_Setup">
<MenuItem Header="_Overview" Command="cmds:NavigationCommands.MenuAdminSetupOverviewNavigationCommand"/>
<MenuItem Header="_Cameras" Command="cmds:NavigationCommands.MenuAdminSetupCameraNavigationCommand" />
</MenuItem>
</MenuItem>
</Menu>
<ControlTemplate x:Key="HomeButtonTemplate" TargetType="{x:Type MenuItem}">
<Grid >
<Image x:Name="myimage" Source="/Images/Navigation/home_off.png" Width="100" Height="52" />
</Grid>
<ControlTemplate.Triggers >
<Trigger Property="Button.IsMouseOver" Value="True">
<Setter TargetName="myimage" Property="Source" Value="/Images/Navigation/home_on.png" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)
为了回应HB的职位...
我确实有一大堆控制模板,目前正在使用它们来设置菜单样式。因此,如果我想为每个顶级标题指定一个不同的控制模板,那么我将不得不为每个头都有一套全新的控制模板吗?
我不确定要使用的确切语法,尤其是对于x:Key和TargetType属性。
例如。对于我的TopLevelHeader和SubmenuHeader控件模板,当前的代码如下所示。(摘自您引用的“菜单页面”)
<!-- TopLevelHeader (children)-->
<ControlTemplate x:Key="{x:Static MenuItem.TopLevelHeaderTemplateKey}" TargetType="MenuItem">
<Border Name="Border">
<Grid>
<ContentPresenter …
Run Code Online (Sandbox Code Playgroud) 我已经创建了一个存储过程,我已将其拖到我的dbml文件中,期望它创建一个返回对象集合的方法.但是它只给了我一个返回ISingleResult的方法.
我的存储过程创建一个表变量,用数据填充它,然后从该表中选择所有变量.
知道我做错了什么吗?我可以发布代码,如果这将有所帮助.
编辑.这是dbml生成的代码
[Function(Name="dbo.gr_RecentActions")]
public ISingleResult<Action> gr_RecentActions([Parameter(Name="UserID", DbType="UniqueIdentifier")] System.Nullable<System.Guid> userID)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), userID);
return ((ISingleResult<Action>)(result.ReturnValue));
}
Run Code Online (Sandbox Code Playgroud)
这是存储过程的一部分.这几乎是直截了当的.
ALTER PROCEDURE [dbo].[gr_RecentActions]
@UserID UNIQUEIDENTIFIER
AS
BEGIN
DECLARE @RecentActions AS TABLE (UserId UNIQUEIDENTIFIER, UserID1 UNIQUEIDENTIFIER, Name VARCHAR(500), GiftID UNIQUEIDENTIFIER, ActionType VARCHAR(20), ActionDate DATETIME)
DECLARE @Friends AS Table (Userid UNIQUEIDENTIFIER)
INSERT INTO @Friends (Userid)
(SUBQUERY...)
INSERT INTO @RecentActions (UserId, UserId1, Name, GiftID, ActionType, ActionDate)
SELECT userid, NULL, Name, g.GiftId, 'GiftAdded', DateCreated FROM Gift g
WHERE UserId IN
(select UserId …
Run Code Online (Sandbox Code Playgroud)