如何从自定义类中的另一个类/控件访问属性?

时间:2012-07-31 12:37:00

标签: c# windows-phone-7 class xaml toolkit

我正在尝试复制Windows手机的邮件系统,但使用其他服务。 我正在使用Coding4Fun Toolkit for Windows Phone中的聊天气泡控件来执行此操作。

(聊天气泡控件的屏幕截图):

enter image description here

我在下面提到的代码工作正常,但是我的datatemplate中的ChatBubbleDirection属性在数据绑定时会产生错误。这是因为我不知道如何使用另一个类的属性(如果这有意义吗?)。怎么做?我只是想不出来......

XAML属性应如下所示:

ChatBubbleDirection="LowerLeft"

你可以猜到,这将决定ChatBubble的小箭头的方向。

以下是邮件类的代码:

using Coding4Fun.Phone.Controls.Toolkit.Common;

public class Message : Coding4Fun.Phone.Controls.ChatBubble
{
    public string Text { get; set; }
    public string SendingDate { get; set; }
    //public Coding4Fun.Phone.Controls.ChatBubble { get; set; }
}

这是按钮点击事件的代码:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        LBmessages.ItemsSource = messages;
        Message m = new Message();
        m.SendingDate = "Today";
        m.Text = "This is a message";
        //m.direction = (Coding4Fun.Phone.Controls.ChatBubble).ChatBubbleDirectionProperty???
        messages.Add(m);
    }

这是XAML:

    <StackPanel x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <ScrollViewer Height="369" Name="scrollviewer1" Width="500">
            <ListBox Name="LBmessages" Height="250">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid Width="456">
                            <cc:ChatBubble Width="500" Margin="0,0,0,20"  ChatBubbleDirection="{Binding direction}">
                            <Grid>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto"></RowDefinition>
                                    <RowDefinition Height="40"></RowDefinition>
                                </Grid.RowDefinitions>
                                <TextBlock Text="{Binding Text}" TextWrapping="Wrap" Width="430"></TextBlock>
                                <TextBlock Grid.Row="1" HorizontalAlignment="Right" Text="{Binding SendingDate}"></TextBlock>
                            </Grid>
                        </cc:ChatBubble>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
       </ScrollViewer>
    </StackPanel>

有人知道我应该在Message类中写些什么吗?我真的不知道如何进一步解释我的问题。我已经尝试在我的Message类中扩展ChatBubble类(如你所见),但没有用。

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

您的Message类扩展了ChatBubble类,因此它已经具有来自父类的ChatBubbleDirection属性。所有你需要写的是:

Message m = new Message();
m.ChatBubbleDirection = ChatBubbleDirection.LowerRight;

答案 1 :(得分:1)

您的邮件类需要有一个名为Direction的公开属性,您将绑定到ChatBubble的ChatBubbleDirection。

private string direction;

public string Direction
{
    get { return direction; }
    set { direction = value; }
}

ChatBubbleDirection可以是以下之一

  • UpperRight
  • UpperLeft
  • LowerRight
  • LowerLeft

我觉得这应该有用。

可以在WindowsPhoneGeek上找到更多信息。

答案 2 :(得分:0)

在课堂上

    public ChatBubbleDirection _Direction;

    public ChatBubbleDirection Direction
    {
        get
        {
            return _Direction;
        }
        set
        {
            if (value != _Direction)
            {
                _Direction = value;
                NotifyPropertyChanged("Direction");
            }
        }
    }

在主要代码中

BBChat.Items.Add(new BMessage()
{
Direction = ChatBubbleDirection.UpperLeft,
}