考虑以下用户控件:
<UserControl ...>
<UserControl.Resources>
<inf:DecimalToPercentageConverter x:Key="DecimalToPercentageConverter"/>
</UserControl.Resources>
<Expander Margin="0,5,5,5" Style="{DynamicResource ExpanderStyle}" IsExpanded="True" IsTabStop="False">
<Expander.Header>
<TextBlock FontSize="15" Foreground="White" Text="{x:Static resources:Strings.GeneralOptions}"/>
</Expander.Header>
<ItemsControl ItemsSource="{Binding DaysViewSource}" IsTabStop="False" Name="ItemsControl">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Background="White" Padding="5" BorderThickness="2">
<HeaderedContentControl IsTabStop="False" Width="240">
<HeaderedContentControl.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Date, StringFormat=d}" FontSize="14" Margin="3"/>
<TextBlock Text="{Binding Date, StringFormat=(ddd)}" FontSize="14" Margin="3"/>
</StackPanel>
</HeaderedContentControl.Header>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Grid.ColumnSpan="2">
<Image Margin="3" Width="16" Height="16" Source="{DynamicResource InformationIcon}" />
<TextBlock Margin="1,3,3,3" Text="{Binding HoursPerAgentText}"/>
</StackPanel>
<TextBlock Grid.Row="1" Text="{x:Static resources:Strings.Utilization}" Margin="3" VerticalAlignment="Center"/>
<TextBox Grid.Row="1" Grid.Column="1"
Text="{Binding Utilization, ValidatesOnDataErrors=true, StringFormat='P2', Converter={StaticResource DecimalToPercentageConverter}}"
Margin="3" VerticalAlignment="Center" />
<TextBlock Grid.Row="2" Text="{x:Static resources:Strings.Shrinkage}" Margin="3" VerticalAlignment="Center"/>
<TextBox Grid.Row="2" Grid.Column="1"
Text="{Binding Shrinkage, ValidatesOnDataErrors=true, StringFormat='P2', Converter={StaticResource DecimalToPercentageConverter}}"
Margin="3" VerticalAlignment="Center"/>
</Grid>
</HeaderedContentControl>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Expander>
</UserControl>
它呈现如下:
我的任务是在所有日子和两个领域实现粘贴功能。用户将从 Excel 工作表中复制值并直接粘贴到其中一个文本框中。我有解析逻辑,但我很难处理如何处理所有控件的粘贴。
到目前为止,我尝试使用带有粘贴命令的 CommandBinding 但这似乎只在后面的视图代码中给了我一个事件,理想情况下,我希望能够处理我的视图模型中的逻辑。我知道有些模式允许将命令绑定链接到具有附加属性(http://codingcontext.wordpress.com/2008/12/10/commandbindings-in-mvvm/)的视图模型,在这种情况下,我在视图模型中得到了事件,但是我得到的只是作为文本框元素的发送者(我不希望在我的视图模型中使用它)。
有没有人遇到过同样的问题或对如何优雅地解决这个问题有想法?