我无法GotFocus()通过单击在WPF窗口中触发事件.但是,如果我点击任何控件,它将被触发.
我的要求如下:我有一个hostwindow,它有一个带有两个datagrids的视口,可以托管用户控件.我在这个用户控件上做了像翻转和淡入淡出的动画.我正在使用透明背景(玻璃效果)来控制.但是当一个用户控件在另一个用户控件之上时,它们都会重叠.因此,当用户单击一个用户控件时,我想使顶部不透明.
我有一个双重动画,窗口被缩小并移到一侧。我在Window_Deactivated事件中执行此操作。代码如下:
<Storyboard x:Key="StoryTestScaleDownGrd1">
<DoubleAnimation Storyboard.TargetName="ScaleUp" Storyboard.TargetProperty="ScaleX"
From="1" To=".20" Duration="0:0:.25" BeginTime="00:00:00" />
<DoubleAnimation Storyboard.TargetName="ScaleUp" Storyboard.TargetProperty="ScaleY"
From="1" To=".20" Duration="0:0:.25" BeginTime="00:00:00" />
<DoubleAnimation Storyboard.TargetName="MoveCenter1" Storyboard.TargetProperty="OffsetX"
Duration="0:0:.25" BeginTime="00:00:00.25" />
<DoubleAnimation Storyboard.TargetName="MoveCenter1" Storyboard.TargetProperty="OffsetY"
Duration="0:0:.25" BeginTime="00:00:00.25"/>
</Storyboard>
Run Code Online (Sandbox Code Playgroud)
在Window_Activated事件中,我有以下代码:
<Storyboard x:Key="StoryTestScaleUpGrd1">
<DoubleAnimation Storyboard.TargetName="ScaleUp" Storyboard.TargetProperty="ScaleX"
From=".20" To="1" Duration="0:0:.25" BeginTime="00:00:00.75" />
<DoubleAnimation Storyboard.TargetName="ScaleUp" Storyboard.TargetProperty="ScaleY"
From=".20" To="1" Duration="0:0:.25" BeginTime="00:00:00.75" />
<DoubleAnimation Storyboard.TargetName="MoveCenter1" Storyboard.TargetProperty="OffsetX"
Duration="0:0:.25" BeginTime="00:00:00.5" />
<DoubleAnimation Storyboard.TargetName="MoveCenter1" Storyboard.TargetProperty="OffsetY"
Duration="0:0:.25" BeginTime="00:00:00.5" />
</Storyboard>
Run Code Online (Sandbox Code Playgroud)
我的viewport2dvisual3d如下:
<Viewport2DVisual3D.Transform>
<Transform3DGroup>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D x:Name="Win1Angle" Angle="0" Axis="0, 1, 0" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
<ScaleTransform3D x:Name="ScaleUp" /> …Run Code Online (Sandbox Code Playgroud) 我有一份成分列表,其中包含成分名称和相应的值.我想根据预先定义的顺序排序.
List<Ingredients> frmltnIngredientsList = new List<Ingredients>
Run Code Online (Sandbox Code Playgroud)
该列表最多可包含10条记录.前四个记录应按以下顺序排列:
其余的可以按任何顺序排列
我在 app.xaml 中定义了一个样式,如下所示:
<Style TargetType="DataGridCell">
<Setter Property= "BorderThickness" Value="1"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridCell">
<Grid Height="18">
<Border BorderBrush="Black" BorderThickness=".2" >
<Border x:Name="border" Background="#992288ff" BorderBrush="Black" BorderThickness=".2">
......
......
......
</Border>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
Run Code Online (Sandbox Code Playgroud)
在我的表单中,我为一个单元格定义了一种样式。代码如下:
<DataGridTextColumn Width="*" Header="Status" Binding="{Binding Status, Mode=TwoWay}" IsReadOnly="True" >
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="Foreground">
<Setter.Value>
<Binding Converter="{StaticResource FGColorKey}"/>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
Run Code Online (Sandbox Code Playgroud)
这里我只定义了前景样式。但是我在 app.xaml 中为单元格模板定义的样式不适用于这个单元格。请看下面的图片:

我的应用程序我需要转换日期时间格式的字符串,如下所示:
var k= DateTime.Parse("20150129163809");
Run Code Online (Sandbox Code Playgroud)
但它抛出了一条错误消息"String未被识别为有效的DateTime".
但是,当我这样做的时候
DateTime.Parse("2015-01-29 16:38:09")
Run Code Online (Sandbox Code Playgroud)
它的工作正常......
可能有什么不对?

我想在主菜单的右侧显示菜单项.目前它显示在左侧.
<Menu Name="menu1" Width="800" Margin="0,0,0,670">
<MenuItem Header="File">
<MenuItem Header="Open"/>
<MenuItem Header="Close"/>
</MenuItem>
<MenuItem Header="Edit"/>
</Menu>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="MinHeight" Value="30" />
<Setter Property="MinWidth" Value="100"/>
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Content="{Binding}" />
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="Background" Value="Yellow" />
<Setter Property="BorderBrush" Value="Black" />
<Setter Property="BorderThickness" Value="1" />
</Style>
Run Code Online (Sandbox Code Playgroud) 
我有一个WPF表单,具有不同类型的控件,如文本框,文本块,组合框,按钮等.我需要使用C#动态地向每个控件添加工具提示,以便它们可以显示以下信息:
我为每个控件执行如下代码(如下所示的文本框代码):
foreach (Control ctrl in grd.Children)
{
if (ctrl.GetType().ToString() == "System.Controls.TextBox")
{
tbox = ctrl as TextBox;
Point p = Mouse.GetPosition(tbox);
tbox.ToolTip =p.X + " " + p.Y + " \n " + tbox.TabIndex ;
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用.有什么想法吗?
<DataGrid x:Name="dgRecords1"
CanUserAddRows="False" IsReadOnly="True"
ColumnHeaderStyle="{DynamicResource DataGridColumnHeaderStyle1}"
Style="{DynamicResource StyleDatagrid}"
SelectionChanged="dgRecords1_SelectionChanged"
Height="251" Width="569" Margin="41,173,168,0">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="ToolTip">
<Setter.Value>
<Border Width="200" Height="80"
BorderBrush="Black" BorderThickness="1"
Background="AliceBlue">
<StackPanel Orientation="Vertical">
<StackPanel Height="30" Background="Black">
<TextBlock Text="Email Sent To"
FontSize="14" FontWeight="Bold" Foreground="White"/>
</StackPanel>
<StackPanel>
<TextBlock Text="{Binding SentToList}"
TextWrapping="Wrap" FontWeight="Bold"/>
</StackPanel>
</StackPanel>
</Border>
</Setter.Value>
</Setter>
</Style>
</DataGrid.RowStyle>
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,
<TextBlock TextWrapping="Wrap" FontWeight="Bold" Text="{Binding SentToList}" />
Run Code Online (Sandbox Code Playgroud)
我想检查这个文本块中是否有东西,如果没有,我需要使工具提示不可见.有没有办法使用触发器?
我有一份清单,其中列出了每个客户购买的产品和药物的详细信息.

我的要求如下:
我想用这些信息创建一个新列表.
我不知道如何使用它.我做了类似下面的事情:
var k = lstOutWeigh.GroupBy(p => new { prod = p.Product, med = p.Medication });
Run Code Online (Sandbox Code Playgroud)