2015-09-12 6 views
0

Я пытаюсь использовать элемент управления StackPanel для отображения некоторых обзорных параметров. Мне нужно иметь этот контроль, используя 20% ширины окна, когда MinWindowWidth больше, чем 768px. Когда это выполняется на мобильном телефоне, мне нужен элемент управления, чтобы заполнить ширину экрана.UWP: настройка ширины и высоты элементов управления в процентах

Я попробовал, как предложено в этом question, чтобы попытаться установить значение в процентах. Однако я получаю ошибку - строка «* не может быть преобразована в длину».

Вот моя XAML -

 <StackPanel x:Name="OverviewStack"> 
      <RelativePanel> 
       <StackPanel Margin="10" x:Name="User" Orientation="Horizontal"> 
        <Ellipse Margin="5" Width="50" Height="50"> 
         <Ellipse.Fill> 
          <ImageBrush> 
           <ImageBrush.ImageSource> 
            <BitmapImage UriSource="Assets/insp.jpg" /> 
           </ImageBrush.ImageSource> 
          </ImageBrush> 
         </Ellipse.Fill> 
        </Ellipse> 
        <TextBlock Margin="5" VerticalAlignment="Center" Text="Ajay Kelkar" /> 
       </StackPanel> 
       <StackPanel Margin="10" x:Name="Options" Orientation="Vertical"> 
        <TextBlock Margin="5" Text="Sample text" /> 
       </StackPanel> 
      </RelativePanel> 
     </StackPanel> 

ли процентное значение не представляется возможным в UWP? Или я делаю что-то неправильно?

+0

Используйте 'Grid' вместо этого. –

+0

@ JustinXL Я попробую это. Мне нужно, чтобы работать с State Triggers –

+0

@JustinXL вы можете опубликовать это как ответ? Я переключился на использование Grid –

ответ

0

Вам необходимо определить, на какой платформе вы находитесь в данный момент, и установить соответствующее значение. Это звучит как конвертер. Поскольку у вас есть только 1 проект для UWP, вам нужно будет проверить конвертер, на какой платформе вы находитесь. такая информация может быть получена как таковой:

if (AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Mobile") { //Act accordingly }

Так что я думаю, что вы хотели бы сделать что-то вроде этого:

public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     // bind the width as the value the converter is set upon 
     var width = double.Parse(value.ToString()); 
     if (AnalyticsInfo.VersionInfo.DeviceFamily == "Windows.Mobile") 
     { 
      return width; 
     } 

     // You weren't clear exactly regarding the 768px thing so act accordingly here 
     return width * 0.2d; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     throw new NotImplementedException(); 
    } 
+0

Использование конвертера для этого действительно уродливого решения. Сетка, которая, в конце концов, используется, намного чище. –

Смежные вопросы