小编Rob*_*etz的帖子

WPF动画弯曲并遵循一些路径几何

好的,所以我正在加载屏幕上工作,我想稍微炫耀一下.

基本上我要做的是沿着路径几何数据动画一个对象......我强调'沿',因为在切线上沿着路径保持一个固定的对象不是我想做的

这是我想要做的最好的代表:

在此输入图像描述

我可以使用矩阵变换沿路径发送此边框元素,但它会随着切线动画的出现而移动并随路径旋转,但不会弯曲以适应路径的形状...这是一个示例那个:

<Border Background="Black" BorderBrush="Transparent" Width="20" Height="20">
<Border.RenderTransform>
    <MatrixTransform x:Name="MatrixT">
        <MatrixTransform.Matrix>
            <Matrix/>
        </MatrixTransform.Matrix>
    </MatrixTransform>
</Border.RenderTransform>
<Border.Triggers>
    <EventTrigger RoutedEvent="Border.Loaded">
        <BeginStoryboard>
            <Storyboard>
                <MatrixAnimationUsingPath Storyboard.TargetName="MatrixT" Storyboard.TargetProperty="Matrix" DoesRotateWithTangent="True" Duration="0:0:5" RepeatBehavior="Forever">
                    <MatrixAnimationUsingPath.PathGeometry>
                        <PathGeometry Figures="M201.1,50.501C201.1,78.138,178.737,100.501,151.1,100.501L150.799,100.501C123.162,100.501,114.933,77.834,100.8,50.501L100.8,50.5C86.666,23.167,78.437,0.5,50.8,0.5L50.5,0.5C22.863,0.5,0.500000000000014,22.863,0.500000000000014,50.5L0.500000000000014,50.501C0.500000000000014,78.138,22.863,100.501,50.5,100.501L50.8,100.501C78.437,100.501,86.666,77.834,100.8,50.501L100.8,50.5C114.933,23.167,123.162,0.5,150.799,0.5L151.1,0.5C178.736,0.5,201.1,22.863,201.1,50.501L201.1,50.501z" PresentationOptions:Freeze="True"/>
                    </MatrixAnimationUsingPath.PathGeometry>
                </MatrixAnimationUsingPath>
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</Border.Triggers>
Run Code Online (Sandbox Code Playgroud)

我想出了一个看起来非常敏锐的替代解决方案,但我想向社区提出这个问题,看看他们是否有任何关于如何完成这项任务的想法(或者如果它甚至可能)......我有在这个问题上做了一些广泛的谷歌搜索,并没有提出如何以有效的方式实现这一目标.

要求:

  1. 它必须遵循(或"弯曲")路径
  2. 它必须能够在不破坏动画的情况下进行缩放(我已经看到的许多笔画动画表示只能在不重新配置动画属性的情况下以一种尺寸操作)...一个视图框是完全可以接受的

如果形状可以逐渐变细并在尾侧上消失,这将是一个更大的优势(见上图),但这可能超过可能

编辑:澄清我的意思'弯曲'...我的意思是下面的图B ...图A是我传统上看到的标准:

在此输入图像描述

c# wpf animation

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

WPF缩放文本仅适用于太大的情况

我试图在WPF中设置一个项目列表,其中包含随机长度的字符串(人名).它们中的大多数通常都在一定的大小范围内,但偶尔会遇到一个字符串,以至于它超出了容器的范围.我通常只是在它太长时间时将其截断,但我更愿意显示整个字符串.

如何强制文本保持正常大小,除非太大而不适合...在这种情况下缩小以适应?

注意:这与缩放所有文本以适合特定大小不同,这是使用文本周围的视图框来完成的

IE:这不是我想要的:

<Viewbox MaxWidth="100">
    <TextBlock Text="{Binding EmployeeDisplayName, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Left" VerticalAlignment="Center"/>
</Viewbox>
Run Code Online (Sandbox Code Playgroud)

这使得当太小时,一切都会扩大,而当太大时,一切都会缩小.我只希望它在太大的时候缩小,当它太小时永远不会扩大......

有什么想法吗?

c# wpf truncate scale

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

WPF从子ItemsControl数据模板内部绑定到父ItemsControl

好的,所以我在这里有一个时髦的...我需要能够从子ItemsControl数据模板内部绑定到父ItemsControl的属性:

<ItemsControl ItemsSource="{Binding Path=MyParentCollection, UpdateSourceTrigger=PropertyChanged}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>

                <ItemsControl ItemsSource="{Binding Path=MySubCollection}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Path=MyParentCollection.Value, UpdateSourceTrigger=PropertyChanged}"/>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>

        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)

我们假设MyParentCollection(外部集合)具有以下类型:

public class MyObject
{
    public String Value { get; set; }
    public List<MyChildObject> MySubCollection { get; set;
}
Run Code Online (Sandbox Code Playgroud)

我们假设上面的类中的MyChildObject属于以下类型:

public class MyChildObject
{
    public String Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如何从内部数据模板内部绑定到MyParentCollection.Value?我不能真正按类型使用FindAncestor,因为它们都使用相同的类型.我想也许我可以在外部集合上添加一个名称,并在内部绑定中使用ElementName标记,但仍然无法解析该属性.

有什么想法吗?我被困在这一个......

.net c# wpf binding

11
推荐指数
2
解决办法
9820
查看次数

自JDK 1.7以来,Java Web Start已经破产

继承人的答案:它似乎(通过我们的测试)是Java 7的Web Start的需要您的主机使用SSL证书的服务器上你的资源.您的证书不必签名,但未签名的证书将提示客户端他们可以忽略的信任消息.有关详细信息,请参阅以下答案

我们有一个内部应用程序,我们已经使用多年了.为了使这个应用程序的维护更容易,我们没有向员工提供可安装的应用程序版本,我们只是给他们一个.jnlp的链接,并使用JWS在他们的盒子上启动它.到目前为止,这种方法效果很好,但只要我们的任何员工更新到Java 7,JWS系统就会停止在他们的计算机上运行.我们已经检查,重新检查,甚至验证了我们的JNLP模式,这很好,这使我们认为Web Start本身存在问题.

当用户单击jnlp文件时,它会启动Java 7启动屏幕,然后开始下载我们需要的资源.从那里它只是挂起,JWS启动应用程序上的进度条保持在零百分比.

有任何想法吗?这很大程度上是因为他们升级到了Java 7.同时我们建议所有员工继续使用Java 6,直到另行通知为止.我们所有的代码都已正确签名.

这是我们JNLP的副本:

<?xml version="1.0" encoding="utf-8"?> 
<jnlp 
  spec="1.5+" 
  codebase="http://peiportal/updater">
  <information> 
    <title>PEI Portal Application</title>
    <vendor>Petz Enterprises, Inc.</vendor>
    <offline-allowed/>
  </information>
  <security>
      <all-permissions/>
  </security>
  <resources>
    <jar href="PEIPortalLauncher.jar"/>
  </resources>
  <application-desc/>
</jnlp>
Run Code Online (Sandbox Code Playgroud)

java jnlp jar java-web-start java-7

8
推荐指数
1
解决办法
2万
查看次数

将证书注册到SSL端口

我有一个Windows服务(作为LocalSystem运行),它自我托管OWIN服务(SignalR),需要通过SSL访问.

我可以在我的本地开发机器上设置SSL绑定 - 我可以在同一台机器上通过SSL访问我的服务.但是,当我转到另一台机器并尝试运行以下命令时,我收到一个错误:

命令:

netsh http add sslcert ipport=0.0.0.0:9389 appid={...guid here...} certhash=...cert hash here...
Run Code Online (Sandbox Code Playgroud)

错误:

SSL证书添加失败,错误:1312

指定的登录会话不存在.它可能已被终止.

我使用的证书是完全签名的证书(不是开发证书),可以在我的本地开发箱中使用.这就是我在做的事情:

Windows服务启动并使用以下代码注册我的证书:

var store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
store.Open(OpenFlags.ReadWrite);
var path = AppDomain.CurrentDomain.BaseDirectory;
var cert = new X509Certificate2(path + @"\mycert.cer");
var existingCert = store.Certificates.Find(X509FindType.FindByThumbprint, cert.Thumbprint, false);
if (existingCert.Count == 0)
    store.Add(cert);
store.Close();
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用netsh和以下代码将证书绑定到端口9389:

var process = new Process {
    StartInfo = new ProcessStartInfo {
        WindowStyle = ProcessWindowStyle.Hidden,
        FileName = "cmd.exe",
        Arguments = "/c netsh http add sslcert ipport=0.0.0.0:9389 appid={12345678-db90-4b66-8b01-88f7af2e36bf} certhash=" + cert.thumbprint …
Run Code Online (Sandbox Code Playgroud)

.net c# self-hosting .net-4.5 owin

7
推荐指数
2
解决办法
7792
查看次数

找不到变量:Safari上的Promise

我有一个我正在开发的网站,可以在Chrome桌面上完美运行(Windows 8.1和OS X Mavericks)

当我在iOS 7或Safari 7.0.2上运行它时,控制台出现错误,指出加载路径时出错:checkIfLoggedIn'

它在消息中指定的成员不是路由,它是一个返回promise的方法.当我通过ember代码调试来弄清楚出了什么问题时,我发现它拒绝承诺的原因是"找不到变量:承诺"

我不能在这里发布我网站上的实际代码,所以我开始创建一个再现错误的小提琴,我能够想出这个:

http://jsfiddle.net/NQKvy/851/

这适用于桌面版Chrome(Windows 8.1和OS X Mavericks),但在iOS 7或Safari 7.0.2上会向控制台抛出以下错误'ReferenceError:找不到变量:Promise'

任何人都有任何想法为什么这不起作用?

回顾一下:

  • 我已经在Chrome for Windows 8.1和OS X Mavericks上进行了测试 - 它可以运行
  • 我已经在Chrome for iOS上进行了测试,但它不起作用
  • 我已经在Safari for iOS和OS X Mavericks上测试过它并没有用
  • 我根本没有在Android上测试过(我此时无法访问任何设备)

这让我相信这是一个Safari错误(如果我没记错的话)Chrome for iOS使用Safari控件来渲染页面而不是Chromium

这是我用来生成错误的代码:

App.ready = function() {
    var asdf = new Promise(function (resolve) {   
        var i = 1;
        i++;
        resolve.call(this,i);
    }).then(function (result) {
        alert('I: ' + result);
    });
};
Run Code Online (Sandbox Code Playgroud)

javascript safari ios ember.js

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

IIS的.Net Web Application app启动工作流程

好吧,让我们说我有一个绝对必须执行某种启动的Web应用程序,并且无论从客户端收到的通信如何都必须保持无限运行(因为它是基于推送的系统)

现在进行测试我一直把它作为一个Windows服务托管,这很棒,因为它允许我有一个硬入口点到应用程序,我可以进行自举,并启动和运行服务

接下来,我试图将其转移到IIS世界中,以便我可以面向外界使用这项服务......而且我遇到了麻烦...我没有任何难以进入的地方我可以引导除了global.asax之外的应用程序,据我所知,它仅在客户端调用服务器时调用

有没有更好的区域我可以放入应用程序的入口并让它自动引导而无需等待客户端连接到它?这个区域只被调用一次还是会被定期调用,因为应用程序超出了范围(可以这么说)?就像我说的那样,应用程序必须始终保持运行状态

c# asp.net iis wcf web-applications

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

Json.Net在序列化期间重命名属性

我有一个我正在连接的库,我完全无法控制.使用如下属性名称格式化对象:

{"my property": "my value"}
Run Code Online (Sandbox Code Playgroud)

{"my-property": "my value"}
Run Code Online (Sandbox Code Playgroud)

使用json.net我可以在类中的属性中添加一个属性来表示每个消息,以将这些属性名称映射到我的类中的属性:

public class MyClass
{
  [JsonProperty(PropertyName="my-prop")]
  public String MyProperty {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

这很好,但问题是我必须在大量的类上使用这些"魔术字符串"而且我真的很鄙视魔术字符串.

底线:

有没有办法将所有这些属性更改为C#可读字符串,以便让json.net自动映射这些属性?

即:

{"my property": "my value"}
Run Code Online (Sandbox Code Playgroud)

应改为:

{"MyProperty": "my value"}
Run Code Online (Sandbox Code Playgroud)

在反序列化期间,然后将该值传递给MyClass中的MyProperty成员,而不使用硬编码字符串值注释该属性.

serialization json json.net deserialization

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

Reactive Extensions/Reactive UI观察集合,对其进行分组并显示它

我有一个特定的数据集,需要存储分组和排序的数据.然后每一行都需要能够在任何单个项目发生变化时重新计算它的总和.

这是最终结果的基本外观:

在此输入图像描述

对象结构如下:

public class MyObject : INotifyPropertyChanged
{
  public ObservableCollection<MySubObject> Objects { get; set; }
  public Decimal TotalOfAll { get; set; }

  /* Ommited INPC and other properties for brevity */
}

public class MySubObject : INotifyPropertyChanged
{
  public Decimal Value { get; set; }
  public String RowType { get; set; }

  /* Ommited INPC and other properties for brevity */
}
Run Code Online (Sandbox Code Playgroud)

视图需要绑定到MyObject,然后通过它的Type属性对Objects属性进行分组.

现在,我已经完成了这个而没有使用反应式扩展,但它感觉很乱...我想通过将MyObject的Objects属性转换为一个observable来实现这一点,理论上,它应该允许我更新总和MySubObject的Value属性发生了变化.

我已经有了构建内容的视图方面,所以这不是问题......它已经完成了RX部分.

注意:

我也可以这样公开我的数据:

public class MyObject : INotifyPropertyChanged
{
  public ObservableCollection<MyRowObject> Objects { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# wpf system.reactive reactiveui

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

Resharper为ReactiveUI的ReactiveObject创建自定义重构

所以我的代码中有大量的视图模型和模型,要求每个属性使用ReactiveUI方式来观察它们的变化:

private bool _myProperty;
public Boolean MyProperty
{
    get { return _myProperty; }
    set { this.RaiseAndSetIfChanged(ref _myProperty, value); }
}
Run Code Online (Sandbox Code Playgroud)

使用Resharper我可以转换它:

public Boolean MyProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)

进入:

private bool _myProperty;
public Boolean MyProperty
{
    get { return _myProperty; }
    set { _myProperty = value; }
}
Run Code Online (Sandbox Code Playgroud)

然后我必须手动将其转换为上面的第一个代码片段,以便合并我的ReactiveUI功能.

我想弄清楚的是,是否有办法为Resharper编写自定义重构,这将允许我在光标位于简单顶部时出现的工具菜单中添加"转换为反应属性"快捷方式物业会员?(已经存在的'转换为自动财产'和'转换为具有变更通知的财产'选项已经存在).

任何帮助是极大的赞赏!这样可以节省我编码的时间TON ...

c# resharper refactoring reactiveui resharper-8.0

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

c#实现接口的类中的虚方法

可以说我有以下课程:

namespace myNamespace
{
    [TypeLibType((short)2)]
    [ClassInterface((short)0)]
    [ComImport]
    public class myClass : myInterface
    {
        public virtual void myMethod();
    }
}
Run Code Online (Sandbox Code Playgroud)

并且假设我有该类实现的以下接口

namespace myNamespace
{
    [Guid("2105896C-2B38-4031-BD0B-7A9C4A39FB93")]
    [TypeLibType((short)4160)]
    [ComImport]
    public interface myInterface
    {
        void myMethod();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,当我编译它时,第一个类中的虚方法返回时出现以下错误:

'myNamespace.myClass.myMethod()' must declare a body because it is not marked abstract, extern, or partial
Run Code Online (Sandbox Code Playgroud)

这个方法应该编译得很好,因为它被标记为虚拟,但由于某种原因它仍然不会编译,我有点不知道为什么因为如果我在MyClass中的MyMethod上定义一个主体然后我得到以下错误的是:

Since 'myClass.myMethod' has the ComImport attribute, 'myNamespace.myClass.myMethod' must be extern or abstract
Run Code Online (Sandbox Code Playgroud)

我正在使用.Net 3.5进行此设置,但它仍然无法在.Net 4.0中运行

c# polymorphism virtual

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

Ember PromiseArray sortBy

好的,所以我有一个控制器,它的模型设置如下:

App.MyModel = DS.Model.extend({
    myOtherProperty: attr(),
    mySortKey: attr(),
    mySubCollection: function () {
        return this.store.filter('MyOtherModel', function (myOtherModel) {
            //Some basic filtering logic (it's actually more complex than this)
            return myOtherModel.get('someProperty') == this.get('myOtherProperty');
        });
    }.property('myOtherProperty')
})
Run Code Online (Sandbox Code Playgroud)

实际的过滤函数并不重要 - 重要的是'mySubCollection'计算属性返回DS.PromiseArray对象.上述模型的控制器类型为'Ember.ObjectController',因为它只显示单个对象.

显示此属性的模板使用{{each}}帮助程序执行此操作:

MyTemplate的:

{{#each mySubCollection}}
    {{view App.MyView}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)

现在 - 我需要按'mySortKey'属性按降序排序这个promise数组.我怎样才能做到这一点?文档说DS.PromiseArray从Ember.Array扩展,但在'mySubCollection'的计算属性末尾添加'sortBy('mySortKey:desc')'导致它破坏而根本不起作用 - 这是有道理的,因为我会在一个承诺而不是数组上调用'sortBy'.

我看了一堆不同的想法,不断出现的是切换到使用ArrayController.我可以做到这一点,但它并不理想,因为它在一个非常简单的设置之上添加了一堆复杂性,它已经很好用了(除了排序).

有什么想法吗?

javascript handlebars.js ember.js ember-data

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

将属性公开给Spark Skin类

我无法将头部缠绕在与其主机组件相关的火花皮类上.基本上,从我在Flex 4框架中出现的大多数皮肤看到的情况来看,它们并不直接暴露在主机组件中动态设置的属性.相反,它们定义暴露给外观类的状态,以定义组件应该看起来不同的时间.当你拥有一个标准状态集的非常简单的组件时,这一切都很好,但是当你在主机组件中设置了20个不同的属性(假设)应该改变皮肤的外观时它可能变得非常复杂很快.

我已经看到他们习惯于解决这个问题的方法是重写commitproperties并使skin类中的函数无效,从那里获取他们想要的属性的值,然后将它们设置为一个本地实例化的变量.皮肤类.这很好,但我觉得这只是一个修补程序,它使事情变得比它需要的复杂得多.

这是我的问题:有没有办法直接从宿主组件类公开可绑定属性,所以当你定义你的皮肤类时,它可以直接从中读取?假设您有自定义按钮,其布尔属性为"selected".在皮肤类中,您希望为属性"selected"添加get和set函数,这样您就可以在设置时对皮肤执行某些操作.你如何告诉皮肤类这是一个可用的属性供你从主机组件使用?

apache-flex access-modifiers hierarchy actionscript-3 class-hierarchy

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