我是Win RT的新手,所以我使用MSDN参考进行签名控制,请参阅https://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn792131.aspx 在此代码中,我可以通过用户控件中的保存按钮保存签名。但我想通过用户控件之外的应用栏中的“保存”按钮保存签名。 问题是我无法弄清楚如何将用户控件与canvass控件绑定到我需要保存签名的视图模型。 在我的ViewModel中,我使用Prism来保存数据;
public SurveyPageViewModel(INavigationService navigationService, ISurveyRepository surveyRepository, ILoggedOnUser loggedOnUser, IEventAggregator eventAggregator, IAppdispatcher appdispatcher, IAppState state)
{
NavService = navigationService;
SurvRepository = surveyRepository;
CurrentLoggedOnUser = loggedOnUser;
EventAgg = eventAggregator;
AppDis = appdispatcher;
State = state;
CancelExitCommand = new DelegateCommand(DoCancelExit);
SaveAndExitCommand = new DelegateCommand(DoSaveAndExit);
SaveCommand = new DelegateCommand(DoSave);
}
在DoSave方法中,我尝试保存签名;
case AppQuestionType.Signature:
var sign = this.Signature;
sign.JobId = propertySurveyId;
if (!string.IsNullOrEmpty(SignatureFullNameOfPerson))
{
SurveyPageViewModel spPageViewModel;
//var surveyRepository = M.Survey.UILogic.Repositoriesolve(typeof(ISurveyRepository)) as ISurveyRepository;
//spPageViewModel.AddSignatureFileEntry(propertySurveyId,
//this.SignatureFilename,
//this.SignatureFullNameOfPerson);
}
(注释掉的代码是我的尝试不起作用)。
用户控制如下:
<UserControl
x:Class="M.Survey.UserControls.SignUserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:M.Survey.UserControls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
xmlns:templateSelectors="using:M.Survey.TemplateSelectors"
xmlns:converters="using:M.Survey.Converters"
xmlns:canvas="using:Microsoft.Graphics.Canvas.UI.Xaml"
xmlns:viewModels="using:M.Survey.UILogic.ViewModels" Width="348">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Themes/Styles.xaml" />
<ResourceDictionary Source="/Themes/AllQuestionDataTemplates.xaml" />
<ResourceDictionary Source="/Themes/DataTemplates.xaml" />
</ResourceDictionary.MergedDictionaries>
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
<converters:InverseBooleanConverter x:Key="InverseBooleanConverter" />
<converters:InverseBooleanToVisibilityConverter x:Key="InverseBooleanToVisibilityConverter" />
<templateSelectors:QuestionTemplateSelector x:Key="QuestionDisplay" Signature="{StaticResource Signature}" />
</ResourceDictionary>
</UserControl.Resources>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="95*"/>
<ColumnDefinition Width="79*"/>
</Grid.ColumnDefinitions>
<TextBox HorizontalAlignment="Left" Margin="54,21,0,247" TextWrapping="Wrap" Text="{Binding SignatureFullNameOfPerson, Mode=TwoWay}" Width="273" RequestedTheme="Dark" Grid.ColumnSpan="2">
<TextBox.BorderBrush>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Black" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</TextBox.BorderBrush>
</TextBox>
<Grid Margin="41,-9,-32,0" Grid.ColumnSpan="2">
<Grid.RowDefinitions>
<RowDefinition Height="154*"/>
<RowDefinition Height="155*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150*"/>
<ColumnDefinition Width="157*"/>
<ColumnDefinition Width="157*"/>
<ColumnDefinition Width="157*"/>
</Grid.ColumnDefinitions>
<StackPanel Name="spHorizontal" Orientation="Horizontal" Margin="31,10,-24,10" Grid.ColumnSpan="2" Grid.RowSpan="2" >
<viewModels:InkCanvas
x:Name="icSignature" Width="268" Background="#FF8A8A8A" Loaded="IcSignature_OnLoaded" Margin="0,98,0,0" />
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="-33,165,65,-74" RenderTransformOrigin="0.5,0.5" Grid.RowSpan="1" HorizontalAlignment="Right" Width="307" Grid.Row="1" Grid.ColumnSpan="4">
<Button Content="Erase" Width="135" Margin="0,16,3,7" Click="erase_Click" Background="Black" Height="41"/>
<Button Content="Save" Width="163" Margin="0,16,3,7" Background="Black" Click="Save_Click" Height="41" >
</Button>
<!--CommandParameter="{Binding ElementName=icSignature}" Command="{Binding SaveSignatureQuestionCommand}"-->
</StackPanel>
</Grid>
<TextBlock HorizontalAlignment="Left" Margin="-140,21,0,0" TextWrapping="Wrap" Text="Name of person" VerticalAlignment="Top" Width="135" Height="48" FontSize="15" Foreground="#FF211C1C"/>
</Grid>
</UserControl>
非常感谢