通过函数绑定文本

时间:2016-11-01 10:53:11

标签: c# wpf xaml xamarin

我正在使用Xamarin开发一个应用程序,目前正在尝试将屏幕宽度显示为(我后来计划将某些对象的大小基于此)

我正在尝试使用绑定来执行此操作,但不幸的是它似乎没有按预期工作。它不会抛出异常,只是我尝试绑定的标签没有文本值。

我确信在项目的其余部分我会使用绑定很多,所以我非常感谢任何建议。

请考虑以下代码:

C#:

using Xamarin.Forms;
using XLabs.Ioc;
using XLabs.Platform.Device;

namespace TimerStyles
{
    public partial class SavedTimesPage : ContentPage
    {
        string screenWidthText = "";

        public SavedTimesPage()
        {
            InitializeComponent();
            this.screenWidth = getScreenWidth();
        }

        public string screenWidth
        {
            protected set
            {
                screenWidthText = value;
            }
            get { return screenWidthText; }
        }

        public string getScreenWidth()
        {
            var dev = Resolver.Resolve<IDevice>();
            var display = dev.Display;
            double ScreenWidthInches = (double)display.Width / display.Xdpi;
            var ScreenWidth = (ScreenWidthInches.ToString());

            return ScreenWidth;
        }

        public string getScreenHeight()
        {
            var dev = Resolver.Resolve<IDevice>();
            var display = dev.Display;
            double ScreenHeightInches = (double)display.Height / display.Ydpi;
            var ScreenHeight = (ScreenHeightInches.ToString());

            return ScreenHeight;
        }
    }
}

的Xaml:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:TimerStyles="clr-namespace:TimerStyles;assembly=TimerStyles"
             x:Class="TimerStyles.SavedTimesPage"
             NavigationPage.HasNavigationBar="false">

  <ContentPage.Content>  
    <StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" BackgroundColor="#232224">
      <Label Text="x" TextColor="Blue" FontSize="Large"/>
      <Label Text="{Binding screenWidth}" TextColor="Blue" FontSize="Large"/>
      <Label Text="x" TextColor="Blue" FontSize="Large"/>

    </StackLayout>   
  </ContentPage.Content> 

</ContentPage>

1 个答案:

答案 0 :(得分:2)

这是通过创建一个&#34;视图模型来解决的。 class作为视图和模型之间的中介,按照以下链接:

https://developer.xamarin.com/guides/xamarin-forms/xaml/xaml-basics/data_bindings_to_mvvm/

(通过cristallo评论中给出的链接进一步获得)

希望这可以帮助太空时代未来的任何人解决同样的问题。