Обязательные сложные свойства в Silverlight/WPF

Отключите службу блокировки портов, например, брандмауэр, и повторите попытку. Надеюсь, что это полезно

9
задан gsnerf 1 April 2009 в 10:33
поделиться

6 ответов

Похож на индексаторы пути poperty, повреждаются в Индексаторах Silverlight в путях свойства, повреждаются. Способ двигаться это как предлагается в сообщении и использовать IValueConverter.

XAML

<UserControl x:Class="Silverlight.Mine.Page"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  xmlns:sys="System"
  xmlns:sm="clr-namespace:Silverlight.Mine;assembly=Silverlight.Mine"
  Width="400" Height="300">
    <UserControl.Resources> 
       <sm:SomeTypeConverter x:Key="MySomeTypeConverter" />
    </UserControl.Resources>    
    <Grid x:Name="LayoutRoot" Background="White">
        <TextBlock x:Name="myTextBlock" Text="{Binding Path=SomeDates, Converter={StaticResource MySomeTypeConverter}}" />
    </Grid>
</UserControl>

C# Page.xaml.cs

namespace Silverlight.Mine
{
    public partial class Page : UserControl
    {
        private SomeType m_mySomeType = new SomeType();

        public Page()
        {
            InitializeComponent();
            myTextBlock.DataContext = m_mySomeType;
        }
    }
}

C# SomeType.cs

namespace Silverlight.Mine
{
    public class SomeType
    {
        public List<DateTime> SomeDates { get; set; }

        public SomeType()
        {
            SomeDates = new List<DateTime>();
            SomeDates.Add(DateTime.Now.AddDays(-1));
            SomeDates.Add(DateTime.Now);
            SomeDates.Add(DateTime.Now.AddDays(1));
        }
    }

    public class SomeTypeConverter : IValueConverter
    {
        public object Convert(object value,
                       Type targetType,
                       object parameter,
                       CultureInfo culture)
        {
            if (value != null)
            {
                List<DateTime> myList = (List<DateTime>)value;
                return myList[0].ToString("dd MMM yyyy");
            }
            else
            {
                 return String.Empty;
            }
        }

        public object ConvertBack(object value,
                              Type targetType,
                              object parameter,
                              CultureInfo culture)
        {
            if (value != null)
            {
                return (List<DateTime>)value;
            }
            return null;
        }
    }
}
7
ответ дан 4 December 2019 в 11:44
поделиться

Я не уверен, что можно сделать это. Обычно Вы будете связывать список с чем-то как поле списка (или другое управление "повторением"), и затем каждый объект в этом сможет связать с соответствующим элементом в списке.

1
ответ дан 4 December 2019 в 11:44
поделиться

Попробуйте {Привязку ComplexProp (0) .simpleSubProp}. Если это не работает, можно записать простой Преобразователь, чтобы сделать это также.

2
ответ дан 4 December 2019 в 11:44
поделиться

Согласно Синтаксису Пути на MSDN, можно просто сделать:

<TextBox Text="{Binding ComplexProp[0].simpleSubProp}" />

Это может быть строчный "путь =", который дал Вам ошибки? Попробуйте "Путь =". Кроме того, не уверенный, если это работает в Silverlight...

1
ответ дан 4 December 2019 в 11:44
поделиться

Я делаю такие вещи все время, есть два способа, которыми я могу подойти к этой проблеме, в зависимости от того, что вы от нее хотите.

Если вы действительно хотите только один конкретный член списка, вы можете использовать конвертер. XAML будет выглядеть примерно так:

<TextBox Text="{Binding MyDataTypeInstance, Converter={StatacResources SpecificInstanceConverter}}" />

Обычно это не то, что мне нужно,

4
ответ дан 4 December 2019 в 11:44
поделиться
var number = 123.123;

Math.max( Math.round(number * 10) / 10, 2.8 ).toFixed(2);
-121--2190520-

Присоединяйтесь к рабочему процессу с помощью VS или windbg и проверьте, может ли он найти PDB и соответствует ли он сборке?

Другая распространенная причина - вы действительно используете release dlls [которые оптимизированы]. Сомневаюсь, что это связано с IIS.

-121--4481946-

Чтобы обобщить это до конца, я предлагаю использовать конвертер значений, как упомянуто другими, и использовать параметр ConverterParam для передачи индекса.

1
ответ дан 4 December 2019 в 11:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: