1

Windows Phone のメッセージング システムを複製しようとしていますが、別のサービスを使用しています。これを行うために、 Coding4Fun Toolkit for Windows Phoneのチャット バブル コントロールを使用しています。

(チャット バブル コントロールのスクリーンショット):

ここに画像の説明を入力

以下に思いついたコードは正常に動作しますが、データ バインド時にデータ テンプレート内の 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 クラスを拡張しようとしましたが (ご覧のとおり)、役に立ちませんでした。

助けてくれてありがとう!

4

3 に答える 3

1

Message クラスは ChatBubble クラスを拡張するため、既に親クラスの ChatBubbleDirection プロパティを持っています。書く必要があるのは次のとおりです。

Message m = new Message();
m.ChatBubbleDirection = ChatBubbleDirection.LowerRight;
于 2012-07-31T12:51:26.690 に答える
1

メッセージ クラスには、Direction と呼ばれるパブリックに公開されたプロパティが必要です。これは、ChatBubble の ChatBubbleDirection にバインドします。

private string direction;

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

ChatBubbleDirection は、次のいずれかになります。

  • 右上
  • 左上
  • 右下
  • 左下

それはうまくいくはずです。

詳細については、こちらのWindowsPhoneGeekを参照してください。

于 2012-07-31T12:52:21.683 に答える
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,
}
于 2015-08-02T20:42:38.143 に答える