2016-04-21 1 views
0

Мне нужно ваше предложение и помощь пожалуйста. У меня уже есть приложение для Windows Phone 8.1, и мне нужно преобразовать его в UWP.Проблема в преобразовании UserControl с Windows Phone 8.1 в универсальное приложение 10

Мой вопрос связан с пользовательской кнопкой пользовательского изображения usercontrol: как его преобразовать и как лучше всего иметь такой контроль над UWP.

Это мой Windows Phone 8 код: -

XAML: -

<UserControl x:Class="CustomizedPopup.ImageButton.ImageButtonControl"> 
<Grid x:Name="LayoutRoot" Background="Transparent"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <!--<Image x:Name="Image" Stretch="Fill" Width="auto" Grid.Row="0"/>--> 
    <TextBlock x:Name="TextBlock" Grid.Row="0" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Center" /> 
</Grid> 
</UserControl> 

CS файл: -

namespace CustomizedPopup.ImageButton 
{ 
public partial class ImageButtonControl : UserControl 
{ 
    public ImageButtonControl() 
    { 
     InitializeComponent(); 
    } 

    ImageSource source; 
    public event EventHandler Click; 


    Double textfontsize; 
    public Double TextFontSize 
    { 
     get { return textfontsize; } 
     set { textfontsize = value; TextBlock.FontSize = textfontsize; } 
    } 
    public ImageSource Source 
    { 

     get { return source; } 
     set 
     { 
      source = value; 
      System.Windows.Media.ImageBrush myBrush = new System.Windows.Media.ImageBrush(); 
      Image image = new Image(); 
      image.Source = source;// new System.Windows.Media.Imaging.BitmapImage(new Uri(@"/Assets/bg/bg1.jpg/", UriKind.RelativeOrAbsolute)); 
      myBrush.ImageSource = image.Source; 
      myBrush.Stretch = Stretch.Uniform; 
      LayoutRoot.Background = myBrush; 

      //Image.Source = source; 
     } 
    } 

    public ImageSource PressedSource { get; set; } 

    string text; 
    public string Text 
    { 
     get { return text; } 
     set { text = value; TextBlock.Text = text; } 
    } 

    protected override void OnMouseLeftButtonDown(System.Windows.Input.MouseButtonEventArgs e) 
    { 
     base.OnMouseLeftButtonDown(e); 
     System.Windows.Media.ImageBrush myBrush = new System.Windows.Media.ImageBrush(); 
     Image image = new Image(); 
     image.Source = PressedSource;// new System.Windows.Media.Imaging.BitmapImage(new Uri(@"/Assets/bg/bg1.jpg/", UriKind.RelativeOrAbsolute)); 
     myBrush.ImageSource = image.Source; 
     myBrush.Stretch = Stretch.Uniform; 
     LayoutRoot.Background = myBrush; 

    } 

    protected override void OnMouseLeave(System.Windows.Input.MouseEventArgs e) 
    { 
     base.OnMouseLeave(e); 

     System.Windows.Media.ImageBrush myBrush = new System.Windows.Media.ImageBrush(); 
     Image image = new Image(); 
     image.Source = Source;// new System.Windows.Media.Imaging.BitmapImage(new Uri(@"/Assets/bg/bg1.jpg/", UriKind.RelativeOrAbsolute)); 
     myBrush.ImageSource = image.Source; 
     myBrush.Stretch = Stretch.Uniform; 
     LayoutRoot.Background = myBrush; 
    } 

    protected override void OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs e) 
    { 
     base.OnMouseLeftButtonUp(e); 
     //Image.Source = Source; 

     System.Windows.Media.ImageBrush myBrush = new System.Windows.Media.ImageBrush(); 
     Image image = new Image(); 
     image.Source = Source;// new System.Windows.Media.Imaging.BitmapImage(new Uri(@"/Assets/bg/bg1.jpg/", UriKind.RelativeOrAbsolute)); 
     myBrush.ImageSource = image.Source; 
     myBrush.Stretch = Stretch.Uniform; 
     LayoutRoot.Background = myBrush; 

     if (Click != null) 
      Click(this, EventArgs.Empty); 

     //Image.Stretch = Stretch.Uniform; 
    } 
} 
} 

ответ

0

Для преобразования Windows 8.1 Помощь приложение UWP вас может использовать этот скрипт

Powershell script to upgrade V8.1 csproj and manifest to uwp

Но он не преобразует ваш код.
Если вы говорите о коде, вы можете оставить XAML как есть, но вам нужны изменения в C#. Заменить все вызовы как

OnMouseLeave(System.Windows.Input.MouseEventArgs e) 

С

OnPointerExited(PointerRoutedEventArgs e) 

И ImageBrush теперь в Windows.UI.Xaml.Media пространстве имен. Измените его также