Каков самый простой способ заполнить поле списка с помощью списка. И как бы вы обнаружили, что струна постукивалась?
List<HistoryEntry> urls = new List<HistoryEntry>();
public HistoryEntry selectedHistory;
public MainPage()
{
InitializeComponent();
}
void Browser_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
// Save for fast resume
_deactivatedURL = e.Uri;
// We have arrived at a new page,
// hide the progress indicator
_progressIndicator.IsVisible = false;
textBox1.Text = Convert.ToString(e.Uri).Remove(0, 11);
getHistory(textBox1.Text);
}
private void getHistory(string url)
{
HistoryEntry urlObj = new HistoryEntry();
urlObj.url = url;
urlObj.timestamp = DateTime.Now.ToString("HH:mm yyyy-MM-dd");
urls.Add(urlObj);
listBox.ItemsSource = urls;
}
private void ListBox_SelectionChanged(object sender, GestureEventArgs e)
{
selectedHistory = listBox.SelectedValue as HistoryEntry;
browserSearch(selectedHistory.url);
}
<Grid>
<ListBox x:Name="listBox" ItemsSource="{Binding urls}" Tap="ListBox_SelectionChanged">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="1" Orientation="Vertical" Margin="0,0,0,29" >
<TextBlock Text="{Binding timestamp}" FontSize="15" ></TextBlock>
<TextBlock Text="{Binding url}" FontSize="25" ></TextBlock>
</StackPanel>
</Grid>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
После добавления новых значений в список они должны отображаться в списке, и при нажатии на одно из значений программа должна отобразить, какое значение было выбрано.
Заранее спасибо :)
Если вам нужны какие-то подробности, прокомментируйте, и я с радостью объясню более подробно :)
5 ответов
List<HistoryEntry> urls = new List<HistoryEntry>();
public MainPage()
{
InitializeComponent();
}
private void WebBrowser_Navigated(object sender, NavigationEventArgs e)
{
string url = Convert.ToString(e.Uri).Remove(0, 11);
HistoryEntry urlObj = new HistoryEntry();
urlObj.URL = url;
urlObj.timestamp = DateTime.Now.ToString("HH:mm yyyy-MM-dd");
urls.Add(urlObj);
listBox.ItemsSource = null;
listBox.ItemsSource = urls;
}
public class HistoryEntry
{
public string URL { get; set; }
public string timestamp { get; set; }
}
Попробуй это!
private void WebBrowser_Navigated(object sender, NavigationEventArgs e)
{
string url = Convert.ToString(e.Uri).Remove(0, 11);
HistoryEntry urlObj = new HistoryEntry();
urlObj.URL = url;
urlObj.timestamp = DateTime.Now.ToString("HH:mm yyyy-MM-dd");
urls.Add(urlObj);
listBox.ItemsSource = null;
listBox.ItemsSource = urls;
}
Обязательно добавьте это в XAML
<StackPanel x:Name="stack">
<ListBox x:Name="lst">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Str}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button Content="Add new Runtime" Click="Button_Click"></Button>
</StackPanel>
Сделайте это в коде, если вы не хотите создавать объекты
List<string> myList = new List<string>();
//fill your list here
foreach (string sItem in myList)
{
ListBox1.Items.Add(sItem)
}
Попробуй это:
XAML:
<StackPanel x:Name="stack">
<ListBox x:Name="lst">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Str}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button Content="Add new Runtime" Click="Button_Click"></Button>
</StackPanel>
CS:
Define Global `ObservableCollection<Data> obj;`
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
obj = new ObservableCollection<Data>();
obj.Add(new Data("string1"));
obj.Add(new Data("string2"));
obj.Add(new Data("string3"));
obj.Add(new Data("string4"));
lst.ItemsSource = obj;
}
//For adding new values to the list, must be seen in the listbox
private void Button_Click(object sender, RoutedEventArgs e)
{
obj.Add(new Data("New Item"));
}
public class Data
{
public string Str { get; set; }
public Data() { }
public Data(string Str)
{
this.Str = Str;
}
}
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.