我有一个方法可以转换多个柱面.如果我再次运行该方法,它会将气缸从原始位置而不是新位置变换.
是否有"应用"转换,以便它更改柱面的基础值,以便我可以从新值重新转换?
有人可以帮忙吗?
干杯,
安迪
void TransformCylinders(double angle)
{
var rotateTransform3D = new RotateTransform3D { CenterX = 0, CenterY = 0, CenterZ = 0 };
var axisAngleRotation3D = new AxisAngleRotation3D { Axis = new Vector3D(1, 1, 1), Angle = angle };
rotateTransform3D.Rotation = axisAngleRotation3D;
var myTransform3DGroup = new Transform3DGroup();
myTransform3DGroup.Children.Add(rotateTransform3D);
_cylinders.ForEach(x => x.Transform = myTransform3DGroup);
}
Run Code Online (Sandbox Code Playgroud) 我有一个字符串列表,我绑定到一个项目控件.
字符串显示在我在itemscontrol模板中声明的文本块中.我已经旋转了文本块270以使文本在它的一边 - 我还将文本块的宽度向下翻译,使它们位于页面的顶部.
我的问题是它们现在距离太远,因为它保持原始宽度而不是变换宽度.我能理解它为什么这样做,但我需要把它们叠在一起,没有间隙.
有人能指出我正确的方向吗?
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="354" Width="632"
DataContext="{Binding RelativeSource={RelativeSource Self}}" >
<Window.Resources>
<TransformGroup x:Key="Rotate">
<RotateTransform Angle="270" />
<TranslateTransform Y="200" />
</TransformGroup>
</Window.Resources>
<StackPanel Orientation="Vertical">
<ItemsControl ItemsSource="{Binding MyStrings}" HorizontalAlignment="Left" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border BorderThickness="1" BorderBrush="Black" Width="200" Height="20" RenderTransform="{StaticResource Rotate}" >
<TextBlock Text="{Binding }" >
</TextBlock>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)
并且背后的代码只是......
使用System.Collections.Generic; 使用System.Windows;
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class …Run Code Online (Sandbox Code Playgroud) 我已经将Transformation和Storyboard设置为本地资源,但是当我从按钮触发故事板时,我收到以下错误:
{"'WorldTranslation'名称在'System.Windows.Controls.Button'的名称范围内找不到."}
有人能指出我正确的方向吗?
<Window.Resources>
<Transform3DGroup x:Key="WorldTranslation">
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D x:Name="myAngleRotation" Axis="0,1,0" Angle="0" />
</RotateTransform3D.Rotation>
</RotateTransform3D>
</Transform3DGroup>
<Storyboard x:Key="MyStoryboard">
<DoubleAnimation
Storyboard.TargetName="WorldTranslation"
Storyboard.TargetProperty="(Transform3DGroup).(RotateTransform3D).(RotateTransform3D.Rotation).(AxisAngleRotation3D.Angle)"
From="0"
To="360"
Duration="0:0:1"
/>
</Storyboard>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)
继续按下按钮xaml ...
<Button Height="20" Width="100">
<Button.Content>Blah</Button.Content>
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<EventTrigger.Actions>
<BeginStoryboard Storyboard="{StaticResource MyStoryboard}" >
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Button.Triggers>
</Button>
Run Code Online (Sandbox Code Playgroud) 我有一个用户控件,我正在动态加载到一个窗口 - 我想设置窗口,使它没有大小,然后我认为窗口相应调整大小取决于UserControl.但它不是 - 任何人都可以协助吗?
我已经做了一个非常基本的例子 - 我已经删除了动态位,只是将一个UserControl放在一个Window中.为了让UserControl周围的窗口紧张,我需要做些什么?
谢谢,
安迪
<UserControl x:Class="WpfApplication1.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300" Background="LightBlue">
<Grid>
</Grid>
</UserControl>
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:WpfApplication1="clr-namespace:WpfApplication1" Title="Window1" >
<Grid>
<WpfApplication1:UserControl1>
</WpfApplication1:UserControl1>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud) 我们有一个庞大的系统通过Unity与其数据源(Navision)松散绑定 - 我们有机会将其交换出来并拥有自己的数据库.
所以我们已经浏览了一下,并且非常喜欢Fluent NHibernate的外观 - 我们试图获得概念验证并交换掉一些服务.
我们想要使用NHibernates HiLo算法 - 不幸的是我们从Navision继承了字符串ID,它的ID是前缀(例如COL00001),所以要匹配我们需要使用字符串Id的接口.
有谁知道我会怎么样......
Id(x => x.ID).GeneratedBy.HiLo("100");
Run Code Online (Sandbox Code Playgroud)
在ID是字符串的地方工作?我们目前正在获取Identity必须是int,long等
谢谢,
安迪
------更新------
我在文章建议中尝试了这个例子但是这个功能已经从Fluent NHibernate的更高版本中删除了 - 但是有一个.Custom - 但我似乎无法让它工作!
public class ManufacturerMap : ClassMap<Manufacturer>
{
public ManufacturerMap()
{
Id(x => x.ID).GeneratedBy.Custom(typeof(StringTableHiLoGenerator));
Map(x => x.Name);
}
}
public class StringTableHiLoGenerator : TableHiLoGenerator
{
public override object Generate(ISessionImplementor session, object obj)
{
return base.Generate(session, obj).ToString();
}
}
Run Code Online (Sandbox Code Playgroud) wpf ×4
c# ×2
3d ×1
animation ×1
interface ×1
itemscontrol ×1
nhibernate ×1
storyboard ×1
textblock ×1
wpf-controls ×1