c# - Windows Phone 7-Función para el botón ListBox
windows-phone-7 (1)
Para asegurarse de que su código funciona, realice algunas pruebas como esta:
<Button Tap="btnTestCommand_Tap" Height="80" Width="80" Command="{Binding addPerson}"
DataContext="{Binding DataContext, ElementName=listBox1}">
<Button.Background>
<ImageBrush ImageSource="/NewExample;component/Images/icon_increase.png" />
</Button.Background>
</Button>
Código detrás:
private void btnTestCommand_Tap(object sender, GestureEventArgs e)
{
Button btn=sender as Button;
var command = btn.Command;
MessageBox.Show("Entering Command Check/n DataContext is of type: "+btn.DataContext.GetType().Name);
if(command !=null)
{
MessageBox.Show("Command is not null");
if(command is ReactiveAsyncCommand)
{
MessageBox.Show("Command is of ReactiveAsyncCommand type");
}
}
}
Tengo una lista de elementos en ListBox.
Todos los artículos tienen botones.
Quiero mostrar el nombre de los elementos seleccionados cuando hago clic en el botón dentro del ListBox (no en los elementos del cuadro de lista).
Mi Xaml: -
<ListBox SelectedIndex="{Binding SelectedIndex,Mode=TwoWay}"
SelectedItem="{Binding SelectedStudent, Mode=TwoWay}" Height="374"
ItemsSource="{Binding StudentDetails,Mode=TwoWay}"
HorizontalAlignment="Left" Margin="2,6,0,0" Name="listBox1"
VerticalAlignment="Top" Width="476" BorderBrush="#00410D0D">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Tap">
<i:InvokeCommandAction Command="{Binding EventPageCommand, Mode=OneWay}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderBrush="Gray" Padding="5" BorderThickness="1">
<StackPanel Orientation="Horizontal">
<Border BorderBrush="Wheat" BorderThickness="1">
<Image Name="ListPersonImage" Source="{Binding PersonImage}"
Height="100" Width="100" Stretch="Uniform" Margin="10,0,0,0"/>
</Border>
<TextBlock Text="{Binding FirstName}" Name="firstName" Width="200"
Foreground="White" Margin="10,10,0,0"
FontWeight="SemiBold" FontSize="22" />
<Button Height="80" Width="80" Command="{Binding addPerson}"
DataContext="{Binding DataContext, ElementName=listBox1}">
<Button.Background>
<ImageBrush
ImageSource="/NewExample;component/Images/icon_increase.png" />
</Button.Background>
</Button>
</StackPanel>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Aquí, cuando hago clic en el botón ''addPerson'', debería mostrar el nombre de los elementos seleccionados.
Ahora tengo que escribir la codificación para el cuadro de lista ''SelectedItmes''.
Mi ViewModel: -
private MVVMListBoxModel selectedStudent;
public MVVMListBoxModel SelectedStudent
{
get { return selectedStudent; }
set
{
if (selectedStudent == value)
return;
selectedStudent = value;
MessageBox.Show("Selected Item==>" + selectedStudent.FirstName + " Selected Index==>" + SelectedIndex);
if (SelectedIndex == 0)
{
var rootFrame = (App.Current as App).RootFrame;
rootFrame.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
}
}
}
Aquí puedo mostrar el nombre seleccionado cuando hago clic en los elementos del cuadro de lista.
Pero ahora quiero mostrar cuando hago clic en el botón.
¿Es posible mostrar los elementos cuando hago clic en el botón?
Ahora lo he intentado así:
public ReactiveAsyncCommand addPerson { get; set; }
public MVVMListBoxViewModel()
{
addPerson = new ReactiveAsyncCommand();
addPerson.Subscribe(x =>
{
MessageBox.Show("Button Clicked..!!");
ListBox listbox = (ListBox)sender;
ListBoxEventsModel items = (ListBoxEventsModel)listbox.SelectedItem;
MessageBox.Show("Selected Name" + items.ToString());
});
}
Pero aquí no puedo mostrar los elementos seleccionados.
Por favor, déjame alguna idea para resolver este problema.