簡體   English   中英

ListBox顯示集合名稱而不是值

[英]ListBox showing collection name instead of value

我在Windows Phone 8.1項目上使用C#,我正在使用SQLite存儲一些遠程連接數據,例如IP,名稱和端口,以對MPC進行遠程控制。

XAML具有一個ListBox元素,它應該在每個項目中顯示連接IP,但是它顯示了它的完整名稱空間,沒有有效值。

我可能還不了解數據綁定如何與Windows Phone一起使用,並且歡迎任何方向。 下面是類和XAML:

Models.Connection.cs

namespace RemotyMPC81.Models
{
    class Connection
    {
        [PrimaryKey, AutoIncrement]
        public int ID { get; set; }

        private string _Host;
        public string Host
        {
            get
            {
                return this._Host;
            }
            set
            {
                this._Host = value;
            }
        }

        [MaxLength(20)]
        public string Name { get; set; }
        public string Port { get; set; }


        public async static Task<ObservableCollection<Connection>> FetchAllAsList()
        {
            var rawList = await DatabaseManagement.ConnectionDb().Table<Connection>().ToListAsync();
            ObservableCollection<Connection> connections = new ObservableCollection<Connection>();

            foreach (Connection connection in rawList){
                connections.Add(connection);
            }

            return connections;
        }

        public async static Task Insert(Connection connection)
        {
            await DatabaseManagement.Insert(connection);
        }
    }
}

Views.Connections.ListPage.xaml

<Grid>
    <ListView x:Name="LstConnection" HorizontalAlignment="Left" Height="486" Margin="10,84,0,0" VerticalAlignment="Top" Width="380" ItemsSource="{Binding}">
        <ListViewItem>
            <TextBlock Text="{Binding Path=Host, Mode=OneWay}" Width="380" Height="39"></TextBlock>
        </ListViewItem>
    </ListView>
</Grid>

Views.Connections.ListPage.cs

    /// <summary>
    /// Invoked when this page is about to be displayed in a Frame.
    /// </summary>
    /// <param name="e">Event data that describes how this page was reached.
    /// This parameter is typically used to configure the page.</param>
    protected override async void OnNavigatedTo(NavigationEventArgs e)
    {
        ObservableCollection<Connection> connections = await Connection.FetchAllAsList();

        LstConnection.ItemsSource = from conn in connections select conn;
    }

模擬器截圖

您將ListViewItem直接放置在ListBox中。 您實際要做的是設置ItemsTemplate

<ListView ...>
    <ListView.ItemsTemplate>
        <DataTemplate>
            <TextBlock ... />
        </DataTemplate>
    </ListView.ItemsTemplate>
 </ListView>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM