Свяжите строки вместо того, чтобы использовать стопку TextBlocks

Из javadocs :

Когда объект Statement закрыт, его текущий ResultSet объект, если он существует, также закрыт.

blockquote>

Однако javadocs не очень понятны, закрыты ли Statement и ResultSet, когда вы закрываете базовый Connection. Они просто утверждают, что закрытие Connection:

Немедленно освобождает эту базу данных объекта Connection и ресурсы JDBC вместо того, чтобы ждать их автоматического выхода.

blockquote>

По-моему, всегда явно закрывайте ResultSets, Statements и Connections, когда вы закончите с ними, поскольку реализация close может различаться между драйверами баз данных.

Вы можете сэкономить много кода котельной пластины с использованием таких методов, как closeQuietly в DBUtils из Apache.

80
задан Gerrie Schenck 12 February 2009 в 15:48
поделиться

2 ответа

Существует свойство StringFormat (в.NET 3,5 SP1), который, вероятно, можно использовать. И полезный WPF, связывающий лист обмана, может найденный здесь . Если это не помогает, можно всегда писать собственный ValueConverter или пользовательское свойство для объекта.

Просто проверенный, можно использовать StringFormat с мультипривязкой. В Вашем случае код будет чем-то вроде этого:

<TextBlock>
  <TextBlock.Text>
    <MultiBinding StringFormat=" {0} - {1}">
        <Binding Path="Number"/>
        <Binding Path="Name"/>
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>

я должен был запустить строку формата с пространства, в других отношениях Visual Studio не создаст, но я думаю, что Вы найдете, что путь обходит его :)

Редактирование
, пространство необходимо в StringFormat, чтобы помешать синтаксическому анализатору рассматривать {0} как фактическая привязка. Другие альтернативы:

<!-- use a space before the first format -->
<MultiBinding StringFormat=" {0} - {1}">

<!-- escape the formats -->
<MultiBinding StringFormat="\{0\} - \{1\}">

<!-- use {} before the first format -->
<MultiBinding StringFormat="{}{0} - {1}">
159
ответ дан Metro Smurf 5 November 2019 в 17:31
поделиться

Можно также использовать связываемое выполнение. Полезный материал, особенно если Вы хотите добавить некоторое текстовое форматирование (цвета, насыщенность шрифта и т.д.).

<TextBlock>
   <something:BindableRun BoundText="{Binding Number}"/>
   <Run Text=" - "/>
   <something:BindableRun BoundText="{Binding Name}"/>
</TextBlock>

Вот исходный класс:
Здесь некоторые дополнительные улучшения.
И это - все в одной части кода:

public class BindableRun : Run
    {
        public static readonly DependencyProperty BoundTextProperty = DependencyProperty.Register("BoundText", typeof(string), typeof(BindableRun), new PropertyMetadata(new PropertyChangedCallback(BindableRun.onBoundTextChanged)));

        private static void onBoundTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            ((Run)d).Text = (string)e.NewValue;
        }

        public String BoundText
        {
            get { return (string)GetValue(BoundTextProperty); }
            set { SetValue(BoundTextProperty, value); }
        }

        public BindableRun()
            : base()
        {
            Binding b = new Binding("DataContext");
            b.RelativeSource = new RelativeSource(RelativeSourceMode.FindAncestor, typeof(FrameworkElement), 1);
            this.SetBinding(DataContextProperty, b);
        }
    }
3
ответ дан cz_dl 5 November 2019 в 17:31
поделиться
Другие вопросы по тегам:

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