小编Ser*_*hov的帖子

当绑定值更改时,启动动画的最佳方法是什么?

这种情况经常出现:

在视图中,您有一个绑定到ViewModel属性的控件(由INotifyPropertyChanged支持).例如:

<TextBlock Text="{Binding Path=Subtotal}"/>
Run Code Online (Sandbox Code Playgroud)

当属性发生变化时,您需要通过一些创意动画吸引用户注意这一事实.我如何利用视图已连接到通知并避免创建大量额外代码(或至少创建一次并重复使用)这一事实.数据触发器可能是最好的选择,但我不知道如何使它们在任何值变化时触发,而不是某些特定值.

我想到以下选项:

  • 在ViewModel中引发一个额外的事件,在View代码隐藏中订阅.
  • 使用转换器创建绑定到提到的属性的数据触发器,如果​​值正在更改,则返回true.
  • 创建一个绑定到ViewModel上的新布尔属性的数据触发器,用于"发出信号"更改.
  • 创建一个附加到控件的行为,该行为将订阅控件的依赖项属性更改并启动动画.

你喜欢/使用哪一个?我错过了任何选择吗?

PS如果解决方案提供了首先启动动画并在结束时反映值变化的可能性,那将是很好的(但不是关键).

data-binding wpf animation mvvm storyboard

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

将ClickOnce与动态加载的程序集一起使用

在我的应用程序中,我动态加载一些程序集,具体取决于用户的选择.当然,这些都没有在项目中引用.使用ClickOnce发布时,这些程序集不包含在程序包中.

问题是 - 是否有可能欺骗ClickOnce发布者使用项目中未引用的其他文件?

clickonce visual-studio-2008

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

F#中的小组总数 - 序列简单,是否可以使用列表?

给定一个组ID /值元组的序列,很容易计算组总数(与使用C#和LINQ的方式非常相似):

let items = ["g1",5; "g2",10; "g1",20]

let groupsums = 
    items  
    |> Seq.groupBy (fun x -> fst x) 
    |> Seq.map (fun (g, s) -> Seq.fold (fun acc x -> acc + snd x) 0 s)
Run Code Online (Sandbox Code Playgroud)

但是对于F#来说是新手,我看不到与列表相同的方法.我是否必须使用可变变量,或者是否有一种功能性的方法来对列表进行相同的操作?

f#

7
推荐指数
3
解决办法
2974
查看次数

SequenceOf和LazySequence - 有什么区别和用途?

我很难理解为什么Swift中有两种不同的结构几乎相同.

  • SequenceOf不是懒惰的吗?
  • 每种用途的用途是什么?

编辑:我想我仍然不明白序列中的"懒惰"是什么意思... Fe采用这个使用SequenceOf的代码,该代码据说不是懒惰的:

    func myMap<S: SequenceType, V>(source: S, 
      selector: S.Generator.Element -> V) -> SequenceOf<V>  {
      let seq = SequenceOf {
         _ -> GeneratorOf<V> in
         var gen = source.generate()
         return GeneratorOf {
           let v = gen.next()
           println(v)
           return v == nil ? nil : selector(v!)
         }
      }
      return seq
    }
Run Code Online (Sandbox Code Playgroud)

我们称之为

    let a = myMap([1, 2, 3], { $0 * 2 })
    var gen = a.generate()
    let v1 = gen.next()
    let v2 = gen.next()
Run Code Online (Sandbox Code Playgroud)

它打印

可选(1)

可选(2)

看起来很懒...

编辑#2: …

swift

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

是否可以使用样式或模板应用混合行为?

我很喜欢我的Blend行为,动作和触发器的小集合 - 它们易于使用且功能强大.但我仍然无法弄清楚如何避免在每个元素的基础上应用它们.例如,如果我有这样的行为:

<Rectangle>
    <i:Interaction.Behaviors>
        <il:MouseDragElementBehavior/>
    </i:Interaction.Behaviors>
</Rectangle>
Run Code Online (Sandbox Code Playgroud)

我的窗口中有一些可拖动的矩形,每个矩形都必须具有可拖动的上述标记.我想做的是能够写出这样的东西:

<Style x:Key="RectangleStyle" TargetType="{x:Type Rectangle}">
    <Setter Property="i:Interaction.Behaviors" 
        Value="il:MouseDragElementBehavior"/>
</Style>
Run Code Online (Sandbox Code Playgroud)

它可以是样式,模板或其他一些避免行为或动作标记重复的方法.到目前为止我提出的最佳解决方案是为容器创建一个特殊的行为(当附加时,它枚举附加到子事件的子项).有任何想法吗?

wpf xaml expression-blend

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

Swift不能从上下文推断类型

我有一个看似合法的函数将数组转换为Dictionary:

func arrayToDictionary<Key : Hashable, Value>
  (source: Array<Value>, key: Value -> Key) -> Dictionary<Key, Value> {
   var dictionary = Dictionary<Key, Value>()
   for element in source {
     let key = key(element)
     dictionary[key] = element
   }
   return dictionary
}
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试调用它时:

let dict = arrayToDictionary([1, 2, 3], { val in return val })
Run Code Online (Sandbox Code Playgroud)

我收到一个错误 - 无法转换表达式的类型'($ T6,(($ T9) - >($ T9) - > $ T8) - >(($ T9) - > $ T8) - > $ T8)'到类型'Hashable'

奇怪的是,如果我使用隐式回报:

let dict = arrayToDictionary([1, 2, 3], …
Run Code Online (Sandbox Code Playgroud)

swift

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

R split apply with dplyr - 如何保持切片产生的NA

mtcars %>% select(mpg, cyl) %>% group_by(cyl) %>% arrange(mpg) %>% slice(8)
Run Code Online (Sandbox Code Playgroud)

输出

    mpg   cyl
  <dbl> <dbl>
1  30.4     4
2  15.2     8
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它不会产生6个柱面的行 - 即使合并为空,建议保留所有组的方法是什么?

r dplyr

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

如果非空,则无法通过样式触发器设置TextBlock Text属性 - 为什么?

下面的XAML不起作用(鼠标悬停时文本不会改变):

<Window.Resources>
    <Style TargetType="TextBlock">
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="true">
                <Setter Property="Text" Value="hover"/>
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Resources>
<Grid>
    <TextBlock Text="original"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

但是,如果缺少Text属性:

 <Grid>
    <TextBlock/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

鼠标悬停时文本会发生变化.有人知道这背后的理论吗?

wpf xaml triggers textblock

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

使用模型第一种方法时是否可以缓存视图?

在我们的产品中,我们使用MVVM模型的第一种方法,它很好地工作,但有一点需要注意.当视图变得复杂时,从数据模板创建它需要时间.如果经常显示和隐藏视图,它会变得有点刺激.如果首先使用视图,那么在需要时缓存视图会很容易 - 但是当首先使用DataTemplate和模型时,我们对视图创建没有太多控制.有没有人在没有切换到第一种方法的情况下解决了这个问题?

wpf mvvm

5
推荐指数
2
解决办法
2379
查看次数

使用Reflection查找弃用

我很好奇是否有人编写任何代码反映到一个类并找到它的Deprecated方法?

我已经掀起了T4模板的反应,并希望让它停止为已弃用的事件生成处理程序,任何聪明的黑客已经打败了我?

c# t4

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