小编And*_*rke的帖子

WPF 3D - 应用转换,更改基础对象值

我有一个方法可以转换多个柱面.如果我再次运行该方法,它会将气缸从原始位置而不是新位置变换.

是否有"应用"转换,以便它更改柱面的基础值,以便我可以从新值重新转换?

有人可以帮忙吗?

干杯,

安迪

    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)

c# 3d wpf

1
推荐指数
1
解决办法
477
查看次数

wpf在textblock上旋转并转换转换问题

我有一个字符串列表,我绑定到一个项目控件.

字符串显示在我在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)

wpf transformation textblock itemscontrol

1
推荐指数
1
解决办法
8496
查看次数

WPF - 无法使故事板影响另一个本地资源

我已经将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)

wpf animation storyboard

1
推荐指数
1
解决办法
4759
查看次数

wpf - 紧密围绕用户控制的窗口

我有一个用户控件,我正在动态加载到一个窗口 - 我想设置窗口,使它没有大小,然后我认为窗口相应调整大小取决于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)

wpf wpf-controls

1
推荐指数
1
解决办法
357
查看次数

获取NHibernate以生成HiLo字符串ID

我们有一个庞大的系统通过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)

c# nhibernate interface fluent-nhibernate loose-coupling

0
推荐指数
1
解决办法
2319
查看次数