2015-09-28 34 views
1

因此,我已经获得了C#5.0 All-In-One for Dummies,但它并没有真正展示我想实现的一个好例子。这是我的XAML:WPF - 命令和引用对象

<StackPanel Grid.Column="1"> 
    <Grid> 
     <Image Source="Images/039.JPG" x:Name="example_image"/> 
     <Image Source="Images/example.png" HorizontalAlignment="Right" VerticalAlignment="Bottom" Panel.ZIndex="999" x:Name="example_logo"/> 
    </Grid> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="8*"/> 
      <ColumnDefinition Width="1*"/> 
     </Grid.ColumnDefinitions> 
     <Slider Grid.Column="0" Margin="10" Maximum="100" SmallChange="1" ToolTip="Watermark size in percent (%)" Value="{Binding Path=SliderValue, Source={x:Static Application.Current}}"/> 
     <TextBlock Grid.Column="1" Text="{Binding Path=SliderValue, Source={x:Static Application.Current}}" HorizontalAlignment="Center" VerticalAlignment="Center" /> 
    </Grid> 
</StackPanel> 

所以我有2个图像,一个图像1(水印)的其他图像2的顶部,我有一个滑块,我已经绑定到一个值我App.xaml.cs.

我需要做的是编写一个自定义命令,它将在滑块移动时触发,我需要向该命令添加一些参数,这将成为2个图像名称,所以我可以使用命令操作这些控件。

我似乎无法锻炼我如何做到这一点,我为我的命令Commands.cs做了一个单独的文件。

为什么我要发送2个图像名称作为参数,以及如果我想使用不同的图像控件,则命令是可重用的。

我该怎么做呢?

回答

1

没有在滑块上的Command属性,虽然有可能增加一个(见https://gist.github.com/anonymous/4326429

一个简单的选择是处理上的滑块或者是如果在App的SliderValue属性ValueChanged事件。 xaml.cs是一个然后你可以从它的setter启动可重用的“命令”代码。

注意,您可能希望查看MVVM模式,而不是将所有代码放在代码后面。

+0

我正在尝试使用MVVM模式,因为我认为将我的命令分隔成Commands.cs将用户输入与代码背后分开。 # –

+0

我还没有添加命令属性的方式,因为即时只是试图澄清它是如何工作的:D –

+0

SliderValue应该可能在你的虚拟机中,而不是在app.xaml.cs中,然后,你可以打电话给你来自setter的命令代码。 –